# 生成测试数据文件
import csv
import random
import string
def get_pwd(minlen,maxlen,pwdtype):
# 换取指定长度
rdm_num = random.randint(minlen,maxlen)
str = ''
# 判断类型
# 获取指定长度的英文
if pwdtype == 1:
# 循环累加下英文字符串数据
for i in range(1, 11):
str = str + string.ascii_letters
# 获取指定长度的数字
elif pwdtype == 2:
for i in range(1, 21):
str = str + string.digits
# 获取指定长度的符号
elif pwdtype == 3:
for i in range(1, 21):
str = str + string.punctuation
# 英文+数字
elif pwdtype == 4:
for i in range(1, 21):
str = str + string.digits+string.digits+string.digits
str = str + string.ascii_letters
# 英文+数字+符号
elif pwdtype == 5:
for i in range(1, 11):
str = str + string.digits + string.digits + string.digits
str = str + string.punctuation + string.punctuation
str = str + string.ascii_letters
else:
print('输入的类型有误!')
return(-1)
pdw_str = ''.join(random.sample(str, rdm_num))
# 纯数字字符串,会存成科学计数法,在他后面+'\t'
if pwdtype == 2:
pdw_str = pdw_str+'\t'
return pdw_str
if __name__ == '__main__':
# 打开文件
file = open('password.csv','w',newline='')
# 创建编辑器
cw = csv.writer(file)
# 输入相关条件:
# 1.指定长度:Min,Max
minlen = int(input("请输入密码长度的最小值:"))
maxlen = int(input("请输入密码长度的最大值:"))
# 输入需要的密码个数
count = int(input('请输入需要的密码个数:'))
for i in range(1,count+1):
# 随机生成密码类型
pwdtype = random.randint(1,5)
# 调用函数
result = get_pwd(minlen, maxlen, pwdtype)
# 函数代码中非return -1,才是1~5个类型中
# 现在用例随机数产生5个类型,代码还可优化,先保留
if result != -1:
print('密码字符串:', result)
# 写入数据(需要把写入的数据放在中括号中,否则数据会被拆开)
cw.writerow([i, result])
else:
pass
# 关闭文件
file.close()