繁体   English   中英

Python无法从文本文件正确读取?

[英]Python not reading from a text file correctly?

我有一个代码,在列表中的文本文件中有一封电子邮件和一个密码,格式如下: ["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()

如果代码已运行,并且您尝试了我一开始输入的内容,则仅第二个电子邮件和密码组合有效。 这是文本文件的外观,类似于文本文件格式

追加:

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")

您正在阅读带有行分隔符的文本。 您的行看起来不是这样的:

tom@gmail.com,Password1

他们实际上看起来像这样:

tom@gmail.com,Password1\n

在逗号上分割时,会得到以下信息:

line = ['tom@gmail.com', 'Password1\n']

行中的测试'Password1' in line失败,但行中的'Password1\\n'将成功。

\\n是换行符。 您需要先将其删除; 您可以使用str.strip()轻松删除开头和结尾的所有空格:

for line in file:
    line = line.strip().split(",")
    if email in line:
        print("Correct email")
    if password in line:
        print("Correct Password")

您可以使用csv模块读取文件,而不是手动拆分:

import csv

with open("logindata.txt", "r") as file:
    reader = csv.reader(file)
    for user, pw in reader:
        if email == user:
            print("Correct email")
        if password == pw:
            print("Correct Password")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM