几天内整理第四个python项目,主要使用python内置模块自动生成指定长度的密码。

前三个项目:

第三个项目,爬取网易云音乐每日推荐歌单,然后定时自动发送到朋友邮箱

我的第二个Python趣味项目,来了!

我的第一个Python实用项目,来了!

项目环境

使用random、string内置模块,用于生成密码序列。

click模块之前介绍过,主要用于封装命令行接口,使用方便。

Python版本是3.7.2

import random import string import click

功能演示

文末下载模块代码后,打开命令行窗口,执行下面一行代码:

python

默认输出密码长度为10位,顺序是完全打乱的:

$#Uyv311QC

添加参数-shuf,设置为False,默认输出的密码格式为:英文字符+数字+特殊字符

python -shuf=False

如下所示:

zpbiD820$@

修改密码长度为15,

python -shuf=False -len=15

生成密码,如下所示:

xcxbgok3731**#%

代码逐行解释

项目由一个模块组成,包括4个全局变量,一个类PwdGenerator组成,一个cmd命令行接口组成。

4个全局变量

如下所示:

alpha_all = alpha = alpha_all[:26] num = special = "@#$%&*"

alpha_all是52个大小写字符,alpha是26个小写字符,num是0-9共10个数字,special是特殊字符。

类PwdGenerator

公开方法gen_pwd,用于生成密码;

私有方法__generate_pass,创建指定序列、指定长度的序列。

class PwdGenerator: def __init__(self, pass_len, is_shuffle=True): = pass_len = max(pass_len // 2, 1) = pass_len * 30 // 100 = pass_len - ( + ) = [] = is_shuffle def gen_pwd(self): """ 生成密码 """ # 生成英文字符部分 (, alpha, True) # 生成数字部分 (, num) # 生成特殊字符部分 (, special) # 打乱顺序 if : random.shuffle() return ''.join() def __generate_pass(self, length, array, is_alpha=False): for i in range(length): index = random.randint(0, len(array) - 1) character = array[index] if is_alpha: # 50%概率转化大写 case = random.randint(0, 1) if case == 1: character = c() .append(character)

一个cmd命令行接口

click模块封装命令行接口的标准用法,如下所示:

@click.command() @click.option('-len', default=10, help='密码长度') @click.option('-shuf', default=True, help='打乱') def cmd(len, shuf): print(PwdGenerator(len, shuf).gen_pwd()) if __name__ == "__main__": cmd()

项目测试

截止2022年1月11日,未发现有bug。

1.《怎么弄字符密码?我来告诉你答案我的第四个项目:Python自动生成密码》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《怎么弄字符密码?我来告诉你答案我的第四个项目:Python自动生成密码》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/2979637.html