我试图用python编写一个登录程序。我正在尝试读取用户名,电子邮件和密码并将其添加到文本文件中。读取文件时,我正在使用类使用用户名等创建帐户,并将其存储在我的users []列表中,以便可以使用“ users [3] .username”之类的名称进行访问。一切正常,但我遇到一个问题:打印每个帐户的最后一个值(在本例中为密码)时,还有一个空行。我不希望这样,因为例如在检查密码是否正确时,我不能像那样使用它。
这是代码
class Accounts:
def __init__(self, username, email, password):
self.username = username
self.email = email
self.password = password
users = []
def add_account(username, email, password):
file = open("useraccounts.txt", "a")
file.write(username + ", " + email + ", " + password + "\n")
file.close()
def read_accounts():
file = open("useraccounts.txt", "r")
count = 0
for line in file:
count += 1
file.seek(0)
for i in range(count):
x = file.readline()
x = x.rsplit(", ")
new_account = Accounts(x[0], x[1], x[2])
users.append(new_account)
file.close()
add_account("Banana", "banana@email.com", "1234")
read_accounts()
print(users[0].username)
print(users[0].email)
print(users[0].password)
print("Something")
这是输出的样子
Banana
banana@email.com
1234
Something
使用多个帐户进行交易以及手动编写文本文件而不使用add_account函数时也会发生这种情况。 我确定问题是我的read_accounts函数,因为在手动创建这样的帐户时不会发生此问题
account = Accounts("Banana", "banana@email.com", "1234")
由于这是我的第一个程序,因此如果您还有其他提示,请告诉我。
1更多:最初,我的帖子以“嘿家伙”开头,但被删除了。为什么会发生这种情况?
答案 0 :(得分:1)
file.readline()
不会从行尾去除换行符,因此,当您将其分割时,换行符仍附加在最后一个元素(密码)上。因此,您应该在阅读中添加rstrip()
,例如:
x = file.readline().rstrip()
这应该有帮助,编码愉快!