python生成任意长度的字典
本人手写的代码,略微繁琐,有简化方法的欢迎讨论哦!代码由两个方法组成:
首先是用于递归生成的方法
'''
递归生成函数
ov: 字符串参数
file: 文件对象
size: 待生成的字典的密码位数
'''
def getCharRes(ov, file ,size):
for (index,iv) in enumerate(allChar):
res = ov+iv
#判断字符长度是否为目标密码位数,若不是则递归调用
if len(res) == size:
#print("当前生成字符:{0}\n".format(res))
file.write(res+'\n');
if index == (len(allChar)-1):
return True
else:
#递归调用
getCharRes(res, file ,size);
然后是用于对递归方法进行调用后的生成方法:
注:此方法调用的时间生成函数需要先导入
'''
递归生成函数
filePath: 文件生成路径
allChar: 所有字符
size: 待生成的字典的密码位数
'''
def generator(filePath, allChar, size):
#记录开始时间
startTime = datetime.datetime.now()
#下面第一个参数为生成文件的路径
pwdTxt = open(filePath,'w')
#开始运行
for ov in allChar:
getCharRes(ov, pwdTxt ,size)
pwdTxt.close();
endTime = datetime.datetime.now()
#输出运行时间
print ("生成路径:{0}\n密码位数:{1}\n生成时间为:{2}".format(filePath, size, (endTime - startTime).seconds))
最后上整个文件的代码:
import datetime
'''
递归生成函数
ov: 字符串参数
file: 文件对象
size: 待生成的字典的密码位数
'''
def getCharRes(ov, file ,size):
for (index,iv) in enumerate(allChar):
res = ov+iv
#判断字符长度是否为目标密码位数,若不是则递归调用
if len(res) == size:
#print("当前生成字符:{0}\n".format(res))
file.write(res+'\n');
if index == (len(allChar)-1):
return True
else:
#递归调用
getCharRes(res, file ,size);
'''
递归生成函数
filePath: 文件生成路径
allChar: 所有字符
size: 待生成的字典的密码位数
'''
def generator(filePath, allChar, size):
#记录开始时间
startTime = datetime.datetime.now()
#下面第一个参数为生成文件的路径
pwdTxt = open(filePath,'w')
#开始运行
for ov in allChar:
getCharRes(ov, pwdTxt ,size)
pwdTxt.close();
endTime = datetime.datetime.now()
#输出运行时间
print ("生成路径:{0}\n密码位数:{1}\n生成时间为:{2}".format(filePath, size, (endTime - startTime).seconds))
#初始化数据
english = "qwertyuiopasdfghjklzxcvbnm"
number = "1234567890"
char = "`-=[]\\;',./~_+{}|:\">?"
english = list( i for i in english)
upEnglish = list(map(lambda x: x.upper() , english))
number = list( i for i in number)
char = list( i for i in char)
allChar = english + upEnglish + number + char
#开始生成 此处生成4位数的密码
generator('F:/Hacker/PWD/pythonPwd.txt', allChar, 4);
温馨提示:密码越长,文件越大,生成时间越长,请谨慎选择生成长度!
文件链接:
链接:https://pan.baidu.com/s/1LI8-hwbjQfeTjHapypRuqA
提取码:xcc7
页:
[1]