python-3.x - 带日志记录的密码生成器
问题描述
import random, logging
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s:%(levelname)s:%(message)s')
file_handler = logging.FileHandler('student.log')
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
mylist = ['Aa', 'Bb', 'Cc', 'Dd', 'Ee', 'Ff', 'Gg', 'Hh', 'Ii', 'Jj', 'Kk', 'Ll', 'Mm', 'Nn',
'Oo', 'Pp', 'Qq', 'Rr', 'Ss', 'Tt', 'Uu', 'Vv', 'Ww', 'Xx', 'Yy', 'Zz', '1', '2', '3', '4', '5', '6', '7', '8',
'9', '0', '!', '@', '#', '$', '%', '^', '&', '*', '~']
def generatePassword(num):
password = ''
for x in range(mylist):
return password
logging.debug(generatePassword,16)
当我执行代码时,编译器说 x 是一个未使用的变量。有没有办法来解决这个问题?另外,我如何编写日志记录函数有什么错误吗?
解决方案
您当前未x
在循环内使用,因此未使用变量警告。
无论如何,如果您想允许密码可能包含两次相同的字符,或者如果您不这样做,请考虑使用:random.choices
random.sample
import random
def generate_password(length, unique_chars_ignore_case=False):
my_list = [
'Aa', 'Bb', 'Cc', 'Dd', 'Ee', 'Ff', 'Gg', 'Hh', 'Ii', 'Jj', 'Kk', 'Ll',
'Mm', 'Nn', 'Oo', 'Pp', 'Qq', 'Rr', 'Ss', 'Tt', 'Uu', 'Vv', 'Ww', 'Xx',
'Yy', 'Zz', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '!', '@',
'#', '$', '%', '^', '&', '*', '~'
]
random_func = random.choices if not unique_chars_ignore_case else random.sample
return ''.join([
x if len(x) == 1 else x[random.randint(0, 1)]
for x in random_func(my_list, k=length)
])
示例用法允许重复:
>>> generate_password(6)
C9#cs2
示例用法仅唯一字符忽略大小写:
>>> generate_password(6, unique_chars_ignore_case=True))
k*065@
推荐阅读
- jenkins - 如何重用 Jenkins Parallel 的重复代码包括阶段部分?
- c# - Unity ML_Agents 尝试初始化通信时出现意外异常:System.IO.IOException
- javascript - 如何以编程方式打开/关闭 antd 子菜单
- mongodb - Mongdb geonear 查询具有给定字段的唯一性并按日期获取最新记录
- excel - 停止/启动模块更改
- sql - 以小时和分钟选择两个日期的差异
- optimization - 修复以从已使用的应用程序中删除未使用的 Javascript 来优化 shopify 网站
- javascript - 将 HTML 转换为 PNG 图像
- amazon-web-services - 如何启用数据 API?
- selenium - 通过可访问性 id 查找元素时 NoSuchElementException 的返回值是多少?