通过用户输入更改文本文件中的文本。Python

2024-06-25 05:45:45 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有这个登录系统,他们可以进入他们最喜欢的艺术家和流派。这会保存到文本文件中。但我知道我需要一个选择,他们可以改变他们最喜欢的艺术家和流派。这是目前为止的代码。用户信息存储在同一行的文本文件中

def registerUser():
 usrFile_write = open(textfile, "a")
 usrFile_write.write("\n" + username + ":" + password + ":" + date + ":" favArtist + ":" + favGenre + ":")
 print("New Account Created!\n")
 usrFile_write.close()
 Menu()
def change():
menu=input("Change account preferences? (y/n")
if menu == "yes":
    NewA=input("What is your new favorite artist...")
    NewG=input("What is your new favorite genre...")
    FavAG = open("user_DB.txt","w")
    FavAG.write (NewA)
    FavAG.write ("\n")
    FavAG.write (NewG)
    FavAG.close()

Tags: closeinputyourisdefopenwhatwrite
1条回答
网友
1楼 · 发布于 2024-06-25 05:45:45

首先,在处理文件时应该始终使用with语句。这样做的好处有据可查。因此:

usrFile_write = open(textfile, "a")
usrFile_write.write("\n" + username + ":" + password + ":" + date + ":" favArtist + ":" + favGenre + ":")
print("New Account Created!\n")
usrFile_write.close()

变成:

with open(textfile, "a") as usrFile:
    usrFile.write("\n" + username + ":" + password + ":" + date + ":" favArtist + ":" + favGenre + ":")
    print("New Account Created!\n")

现在,在纯文本文件中工作时,不能真正编辑特定行。为了更新现有用户条目,您必须删除现有条目并在其位置创建一个新条目。这需要通读文件并重写整个内容,除了特定的行。您可以将其放入一个通用的deleteUser函数中,以便以后重用:

def deleteUser(username):
    with open(textfile, "r") as usrFile:
        lines = usrFile.readlines()
    with open(textfile, "w") as usrFile:
        for line in lines:
            if line.split(":")[0] != username:
                usrFile.write(line)

然后,要修改用户,请删除他们的条目,然后使用新信息创建一个新条目

这应该能暂时解决你的问题。从长远来看,我建议考虑使用像sqlite这样的数据库,这项工作更适合它

相关问题 更多 >