我正在尝试创建一个密码生成器。该程序应生成随机密码列表,然后将其写入.txt
文件。使用下面的代码,程序只写入生成的最后一个密码,而不是所有密码。
#!/usr/bin/python3
import random
#The Characters List
Characters = "abcdefghijklmnopqrstuvwxyz!@#$%^&*()_+-=[];'\,./ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
#Password Generator
#Get the Input form the User
Length = input("Password Length > ")
Length = int(Length)
#Get the Input form the User
PasswordNumber = input("Number of Passwords > ")
PasswordNumber = int(PasswordNumber)
for p in range(PasswordNumber):
Password = ""
for i in range(Length):
Password += random.choice(Characters)
print(Password)
f= open("PasswordList.txt","w+")
f.write(Password)
f.close()
我的结果:
Password Length > 10
Number of Passwords > 5
LgoQ$i%e_O
![i/NxsqQr
n-ydWA/9.5
ksI,jg]#8q
![xrU#=2@#
但是当我打开" PasswordList.txt"里面的文本只是:![xrU#=2@#
,它生成的最后一个密码。
此外,我希望密码的格式与终端上显示的格式相同:
LgoQ$i%e_O
![i/NxsqQr
n-ydWA/9.5
ksI,jg]#8q
![xrU#=2@#
而不是这样:
LgoQ$i%e_O![i/NxsqQrn-ydWA/9.5ksI,jg]#8q![xrU#=2@#
答案 0 :(得分:2)
您只能获得一个密码,因为这是您告诉它要做的:生成并打印出所有密码。一旦它们全部生成,然后您只需要为该文件写一个密码。
您需要将该print语句拉入循环:
f = open("PasswordList.txt","w+")
for p in range(PasswordNumber):
Password = ""
for i in range(Length):
Password += random.choice(Characters)
print(Password)
f.write(Password + "\n")
f.close()
要获得相同的格式,只需为每个write
添加换行符,或使用writeln
方法。
示例输出,包含10个长度为8的密码:
w@wz+]S2
8t=G#r,F
H$aITs0&
=dMbird6
Y)Dpu]EZ
K\ZDNI*M
L6(2L_7_
VJL3GxF$
.nRt!XIa
=OXP8=aC