转载自品略图书馆 http://www.pinlue.com/article/2020/04/1003/4810139721035.html
代码:
# -*- coding: utf-8 -*-
from random import choice
import string
import os,re,sys
dict={}
path=os.getcwd()
#specialchars="!@#$%^&*()" #设置特殊字符(可选)
def GenPasswd(length):
# chars=string.letters+string.digits+specialchars
chars="23456789abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ" #去掉字母o和O,字母i和I,字母l和L,方便区分数字0,1
num = 5;
while num > 0:
num = num - 1
j = "".join([choice(chars) for i in range(length)])
#以下判断为了避免同次执行时有重复【随机码】
if not dict.has_key(j):
dict[j]=i
return 0
print("已经重复%d次获取到相同的key,退出程序\n",num)
exit()
def usage():
usages="""
*******************
使用方法和提示:
输入[前缀] 如果全是空格或TAB(或空格和TAB的混合)默认为无前缀(等同于直接回车键)
输入[密码长度] 最小大于0
输入[密码数量] 最小大于0,该项不填,默认只生成1个密码字符
*******************
"""
print usages,
def usage_warning():
print "#"+"-"*78+"#"
u_w="""
请注意:输入[前缀] 如果全是空格或TAB(或空格和TAB的混合)默认为无前缀(等同于直接回车键)
"""
print u_w,
print "#"+"-"*78+"#"
def check(input_str):
if re.match(r"^\d+$", input_str):
pass
else:
print "填写随机码的长度和数量时,输入的字符[都必须]是数字,请重新执行!"
print("\n***按任意键继续...")
os.system("pause>nul")
def logic(arg1,arg2,arg3):
if (arg1 != "") and (arg2 == ""):
check(arg1)
if (int(arg1) != 0):
GenPasswd(int(arg1))
else:
usage()
for m in dict.keys():
merge = arg3 + m
print merge
f.write("%s\n"%merge)
elif (arg1 != "") and (arg2 != ""):
check(arg1)
check(arg2)
if (int(arg1) != 0) and (int(arg2) != 0):
for i in range(int(arg2)):
GenPasswd(int(arg1))
for m in dict.keys():
merge = arg3 + m
print merge
f.write("%s\n"%merge)
else:
usage()
else:
usage()
if __name__=="__main__":
f=open("%s/code.txt"%path,"a")
print "#"+"-"*78+"#"
print "\t功能:任意长度,任意数量 包含大小写字母,数字的随机码生成"
print "\t更新:加入前缀码输入功能"
print "\t备注:去掉字母o和O,字母i和I,字母l和L,方便区分数字0,1"
print "\t"+"writed by:联运支持 [@boban 2013-04-01]"
print "#"+"-"*78+"#"
#print "***请输入参数***:"
arg3 = raw_input("*随机码前缀 请输入【数字或字母或字数混合】,可空):")
arg1 = raw_input("*随机码长度 请输入【数字】,必填,备注:该项不包含"前缀"长度):")
arg2 = raw_input("*随机码数量 请输入【数字】,可空,备注:输入需要的随机码数量,若为空,则默认生成1个随机码):")
if re.match(r"^\s+$", arg3):
usage_warning()
arg3=""
logic(arg1,arg2,arg3)
else:
logic(arg1,arg2,arg3)
f.close()
print("\n*随机码已保存在程序所在目录code.txt文件中,请检查\n***按任意键退出...")
os.system("pause>nul")