如何根据用户输入关键词,实现密码管理器的分平台文件写入?
解决方案
核心思路
- 解析输入提取平台名:将用户输入按空格拆分,匹配指令格式后提取最后一段作为平台名称,实现对任意平台的识别
- 封装密码生成逻辑:把密码生成代码抽成独立函数,提升复用性和可读性
- 通用文件写入:用平台名动态拼接文件名,结合
with语句安全完成文件写入
修改后的完整代码
import secrets import string def generate_secure_password(length=12): letters = string.ascii_letters digits = string.digits spec_chars = string.punctuation alphabet = letters + digits + spec_chars while True: password = ''.join(secrets.choice(alphabet) for _ in range(length)) # 验证密码复杂度:至少1个特殊字符+至少2个数字 has_spec_char = any(char in spec_chars for char in password) has_enough_digits = sum(char in digits for char in password) >= 2 if has_spec_char and has_enough_digits: return password # 处理用户指令 user_input = input("请输入指令(格式:get new pwd [平台名]):") input_parts = user_input.strip().split() # 验证指令格式并执行操作 if len(input_parts) == 4 and input_parts[:3] == ['get', 'new', 'pwd']: platform = input_parts[3] secure_pwd = generate_secure_password() # 写入对应平台的txt文件 filename = f"{platform}.txt" with open(filename, 'w') as file: file.write(secure_pwd) print(f"已为平台 {platform} 生成并保存密码:{secure_pwd}") else: print("指令格式错误,请使用:get new pwd [平台名]")
关键部分说明
- 输入解析:通过
split()拆分输入字符串,判断前三个元素是否匹配固定指令前缀,直接提取第四个元素作为平台名,不管用户输入steam、github还是其他平台都能适配 - 密码生成函数:把原有的生成逻辑封装成函数,返回符合复杂度要求的密码,避免重复代码,后续还能方便调整密码长度或复杂度规则
- 文件操作优化:用
with open()语句自动管理文件资源,不需要手动调用close();用f-string动态生成文件名,确保每个平台对应独立的.txt文件 - 格式校验:加入指令格式判断,避免用户输入错误指令导致程序异常
内容的提问来源于stack exchange,提问作者esp
相关产品推荐
相关产品推荐

