“Python生成随机密码”的版本间的差异
跳到导航
跳到搜索
docker>Evan (→起因) |
小 (导入1个版本) |
(没有差异)
|
2019年10月14日 (一) 13:52的最新版本
python生成随机密码
起因
早上帮虾哥搞个mysql 一时不知要用什么密码比较好,于是想到这几天在学习python 那就让万能的python出来吧 哈哈 string模块中的3个函数:string.letters,string.printable,string.printable。以下是这几个函数的输出,大家可以看一下,不用多讲: In [1]: import string In [2]: string.letters Out[2]: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' In [3]: string.digits Out[3]: '0123456789' In [4]: string.printable Out[4]: '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
主体
主体代码
以下是随机生成4组包含数字、大小写字母的随机数生成方法,大家可以指定随机数的长度: #!/usr/bin/python #-*- coding:utf-8 -*- ''' make_password.py 简短地生成随机密码,包括大小写字母、数字,可以指定密码长度 ''' #生成随机密码 import random import string #python3中为string.ascii_letters,而python2下则可以使用string.letters和string.ascii_letters def GenPassword(length): chars=string.ascii_letters+string.digits return ''.join([random.choice(chars) for i in range(length)])#得出的结果中字符会有重复的 #return ''.join(random.sample(chars, 15))#得出的结果中字符不会有重复的 if __name__=="__main__": #生成10个随机密码 for i in range(4): #密码的长度为15 print GenPassword(15)
代码解说
首先是join In [35]: str='-' In [36]: seq =['x','y','z'] In [37]: print str.join(seq); x-y-z #所有字母和数字 In [30]: chars=string.ascii_letters+string.digits In [31]: chars Out[31]: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' ##随机选择两个字符 In [32]: [random.choice(chars) for i in range(2)] Out[32]: ['5', 'l'] In [33]: [random.choice(chars) for i in range(2)] Out[33]: ['Q', 'v'] #把字符 串在一起 中间没有空格哦 In [34]: ''.join([random.choice(chars) for i in range(2)]) Out[34]: '9x'
参考
http://wangwei007.blog.51cto.com/68019/1224833
http://www.ttlsa.com/python/python-random-password/
python join 和 split的常用使用方法
http://wangwei007.blog.51cto.com/68019/1100587 http://www.runoob.com/python/att-string-join.html