【发布时间】:2017-01-03 17:18:36
【问题描述】:
我有一个代码,其中我在列表中的文本文件中有电子邮件和密码,格式如下:["tom@gmail.com","Password1"],["harry@gmail.com","Password2]。
我的代码从文本文件中读取,并将其与用户输入进行比较,以查看它是否存在于文本文件中。出于某种原因,当我输入第一封电子邮件"tom@gmail.com" 时,它会从文本文件中读取,但不是"Password1",但是它会正确读取"harry@gmail.com" 和"Password2"。我找不到任何方法来解决这个问题并解决这个问题?没有收到错误,所以我不确定它哪里出错了。这是我的代码:
def Login():
with open("logindata.txt","r") as file:
for line in file:
line=line.split(",")
logindata.append([line[0],line[1].rstrip()])
print(logindata)
found=False
while found == False:
email=input("Enter email:")
password=input("Enter password:")
with open("logindata.txt","r")as file:
for line in file:
line = line.split(",")
if email in line:
print("Correct email")
if password in line:
print("Correct Password")
found=True
if __name__ == "__main__":
Login()
如果代码运行并且您尝试了我在开始时提供的输入,那么只有第二个电子邮件和密码组合有效。这是文本文件的样子text file format
追加:
username=input("Enter a new email")
password=input("Enter a password")
with open('logindata.txt','a')as file:
line='\n'+ username + ',' + password
file.write(line)
print("user added")
【问题讨论】:
-
您忘记删除换行符;
password不在行,password\n在行。 -
@MartijnPieters 很抱歉回到这个问题,但如果我想在文本文件中附加一封新电子邮件,我需要将 \n 放在密码的末尾以将其放到下一行那么我该如何实现呢?
-
最佳方式:使用
csv.writer()写入文件。每次您使用writerow()方法时,它都会为您添加换行符。否则,写入时手动添加;以fileobj.write('{},{}\n'.format(userid, password))为例。 -
@MartijnPieters 我有点想远离 csv 和写作,我对它们不太熟悉。我试过这个应该肯定可以工作,因为它只是在用户名之前添加一行,但它最终将数据放在下面的两行而不是直接
标签: python list python-3.x text-files