在日常运维中,如果涉及到用户管理,就一定会用到给用户设置密码的工作,其实吧,平时脑子里觉得设置个密码没什么,但要真让你随手敲一个12位带特殊字符的随机密码,也是很痛苦的事,如果让你敲10个这样的随机密码,我估计要人要疯了,所以这事不适合人干,但机器最做这个最拿手,今天我们就来学习一段python脚本,可以直接生成自己需要的密码,且密码长度,数字,字符个数随意你指定,废话不多说了,我们直接看代码:

#!/usr/bin/env python

import string

from itertools import chain

from random import choice, sample

def mkpasswd(length=12, digits=4, upper=3, lower=3):

lowercase = string.lowercase

uppercase = string.uppercase

salt = '!@#$%^&*()>'

password = list(

chain(

(choice(uppercase) for _ in range(upper)),

(choice(lowercase) for _ in range(lower)),

(choice(string.digits) for _ in range(digits)),

(choice(salt) for _ in range((length - digits - upper - lower)))

)

)

return "".join(sample(password, len(password)))

if __name__ == '__main__':

print mkpasswd()

#!/usr/bin/env python

import string

from itertools import chain

from random import choice, sample

def mkpasswd(length=12, digits=4, upper=3, lower=3):

lowercase = string.lowercase

uppercase = string.uppercase

salt = '!@#$%^&*()>'

password = list(

chain(

(choice(uppercase) for _ in range(upper)),

(choice(lowercase) for _ in range(lower)),

(choice(string.digits) for _ in range(digits)),

(choice(salt) for _ in range((length - digits - upper - lower)))

)

)

return "".join(sample(password, len(password)))

if __name__ == '__main__':

print mkpasswd()

脚本逐行解释,最开始几行导入了需要的模块,接下来定义一个mkpasswd的函数,函数的参数可以设置密码长度,数字、大写和小写字符的个数,接下来是函数主题部分:

利用string模块的属性生成大小写字符串,salt是特殊字符集(支持自己添加),我们重点说password的生成,它首先是一个列表,因为调用了list()工厂函数,chain()函数的功能是将一组迭代器对象连接起来,chain()里有三个生成器表达式,每个表达式调用for循环,然后随机选择指定个数的字符,可能大家有看到for循环中有一个_(下划线),这个下划线有什么作用呢?我就不卖关子了,其实它啥作用也没有,我自己理解为用不到的变量,这种写法大家以后也可以用,比如你在循环的时候用不到这个变量,就可用用_(下划线)来表示。

函数最后是return连接后的字符串,sample()函数是从随机样本中取出自己指定的样本个数,需要两个参数,一个是样本,一个是取多少,取的过程是随机的,其实在这个脚本中这个函数没有发挥它完全的功能,因为生成的password就是12位的,然后在取出12位,不存在从大样本中取出小样本的工作,但起到了随机的功能,所以生成的密码是字符都是随机的。

关于Python随机生成带特殊字符的密码就给大家介绍到这里,希望对大家有所帮助!

python随机生成密码字符串_Python随机生成带特殊字符的密码相关推荐

  1. python随机生成12位数字_Python随机生成带特殊字符的密码

    在日常运维中,如果涉及到用户管理,就一定会用到给用户设置密码的工作,其实吧,平时脑子里觉得设置个密码没什么,但要真让你随手敲一个12位带特殊字符的随机密码,也是很痛苦的事,如果让你敲10个这样的随机密 ...

  2. python随机生成一个数字_python随机生成

    在数据分析中,数据的获取是第一步,numpy.random 模块提供了非常全的自动产生数据API,是学习数据分析的第一步. 总体来说,numpy.random模块分为四个部分,对应四种功能: 简单随机 ...

  3. python密码传参有特殊字符如何解决_python生成带特殊字符的密码

    在日常运维中,如果涉及到用户管理,就一定会用到给用户设置密码的工作,其实吧,平时脑子里觉得设置个密码没什么,但要真让你随手敲一个12位带特殊字符的随机密码,也是很痛苦的事,如果让你敲10个这样的随机密 ...

  4. python中随机种子怎么用_Python 随机种子介绍,PyTorch 中随机种子的设置应用

    随机种子是什么? 随机种子是针对 随机方法 而言的. 随机方法:常见的随机方法有 生成随机数,以及其他的像 随机排序 之类的,后者本质上也是基于生成随机数来实现的.在深度学习中,比较常用的随机方法的应 ...

  5. python自动生成word报告_python自动化生成分析报告,让你的工作效率提升10倍+

    打开搜狗搜索APP,查看更多精彩资讯 如果你每天都需要输出分析报告,报告模式基本一致,只是更换里面的分析数据,每天重复着同样的工作,费时费力,工作能力没有丝毫的提升,但是如果你学过python,你就可 ...

  6. python按年月日输出字符串_python日期时间转为字符串或者格式化输出的实例

    python日期时间转为字符串或者格式化输出的实例 如下所示: 年月日时分秒 >>> print datetime.datetime.now().strftime("%Y- ...

  7. python 只取年月日 字符串_Python基础:数据类型和变量amp;字符串和编码

    Python基础:1.数据类型和变量 数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网 ...

  8. python处理多行字符串_python多行字符串

    Python中如何处理长代码格式化问题,如何提高格式化输出的长字符串的可读性? 当我们需要格式化输出一个很长的字符串的时候,都写在一行显得很难看,而且可读性也很差:当我们使用链式的语法写代码的时候常常 ...

  9. python读取路径中字符串_python实现提取str字符串/json中多级目录下的某个值

    字符串多级目录取值: 比如说: 你response接收到的数据是这样的. 你现在只需要取到itemstring 这个字段下的值.其他的都不要! 思路就是:字符串是个json格式(或转为json格式), ...

最新文章

  1. 晕死!博客园把我搞晕了!
  2. 成功将用intelli idea 建立的项目打包成jar文件,并在Linux上成功运行
  3. Navicat for MySQL 连接 Mysql 8.0.11 出现1251- Client does not support authentication protocol 错误
  4. [系统安全] 四十一.APT系列(6)Python解析PE文件并获取时间戳判断来源区域
  5. 定时插座动一下就断_使用插座定时器在某些时候自动将您的Amazon Echo静音
  6. Android Studio开发基础之细节问题笔记
  7. 【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记
  8. 【java】变量的应用
  9. 当Python遇上HDF5--性能优化实战
  10. MPU6050误差分析
  11. 使用 GitHub Pages 和 Hexo 以及 Aurora 主题搭建静态个人博客
  12. Asp开发中出现“msxml3.dll 错误 ‘800c0005‘系统未找到指定的资源
  13. 订单信息无法识别,建议联系卖家。 错误码:INVALID_PARAMETER
  14. fps射击HTML网页游戏,关于Unity中FPS第一人称射击类游戏制作(专题十)
  15. 华为打造的智慧办公“新物种”,为何在央视节目露脸?
  16. vue中el-radio-group点击事件,双击取消
  17. vue大文件下载(下载进度展示)
  18. vimdiff 快捷键
  19. knockoutjs中的visible绑定
  20. 最新版大学英语六级词汇打印版

热门文章

  1. Java mail 邮件发送 附件文件名过长的问题 版本1.5及以上
  2. threejs制作城市场景
  3. 一个.NET(C#)的双键字典类
  4. 进销存管理系统【源码开放】
  5. 骚里骚气的免费必备软件
  6. tp3的单字母函数在thinkphp5.0改为助手函数简介
  7. Ajax 二级联动
  8. 【Java】【final修饰符】
  9. 目前微博粉丝的四大来源
  10. 【2·未知攻焉知防】 如何利用SQL注入,结合图片马渗透入侵服务器