Python开发密码生成器报TypeError字符串拼接错误如何解决
报错原因
random.randint(0, 9999999)返回的是整数类型,Python不支持直接拼接字符串与整数,因此触发了TypeError。
除此之外你的代码还有几处潜在问题:
- 变量名
leght为拼写错误,正确应为length open(temp.txt, "w")写法错误,会被识别为访问变量temp的txt属性,而非拼接.txt后缀作为文件名,修复第一个报错后运行仍会触发新的错误- 文件写入完成后没有关闭逻辑,会造成文件句柄泄漏
- 不建议使用
all作为变量名,会覆盖Python同名内置函数
修复方案
- 用
str()将random.randint的返回值转换为字符串后再和前缀拼接 - 文件名拼接时显式将
.txt作为字符串和temp变量拼接 - 使用
with上下文管理器自动管理文件生命周期,无需手动调用关闭方法 - 调整变量名避免覆盖内置函数
修复后的完整代码:
import random upper = "QWERTYUIOPASDFGHJKLZXCVBNM" lower = "qwertyuiopasdfghjklzxcvbnm" number = "0123456789" symbol = "!@#$%^&*" all_chars = number + lower + upper + symbol length = 9 password = "".join(random.sample(all_chars, length)) # 转换整数为字符串后拼接,同时带上文件后缀 temp = "pass_temp" + str(random.randint(0, 9999999)) + ".txt" # 使用with语句自动管理文件关闭 with open(temp, "w") as pas: pas.write(password)
内容的提问来源于stack exchange,提问作者vp cume
相关产品推荐
相关产品推荐

