如何在文本文件中编写多个变量 - Python?

时间:2018-04-18 22:13:20

标签: python python-3.x text passwords

我正在尝试创建一个密码生成器。该程序应生成随机密码列表,然后将其写入.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@#

1 个答案:

答案 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