问题总结我制作了这个地址簿,将用户输入转储到 .txt 文件中,我希望能够让用户删除保存在地址簿(.txt 文件)中的人,如果他们愿意的话。我该怎么办?基本上我只是希望将其从 .txt 文件中擦除,而无需自己手动执行,也无需删除其他名称和信息我试过的这是我在程序中输入的一些代码,试图让用户执行删除某人的任务,但它会运行顺利,但是当我去检查 .txt 文件时,这个人和他们的信息仍然存在。if input("would you like to remove someone from the registry?('Yes' or 'No')") == "Yes": who_delete = input("Who would you like to remove?")del who_delete(我在 book = {} 行下面列出的代码上输入了上面的代码。)#current codeimport jsonbook = {}Name = input("Enter a name")book[Name] = {"Address": input("Enter an adress"),"Phone": input("Enter a phone number"),}s=json.dumps(book, indent=2)with open("C://Users//user//OneDrive//Desktop//Library//Coding and Programming Projects//Self Projects//Address Book//addressbook.txt", "a") as f: f.write(s)预期结果:在运行程序时通过 shell 从 .txt 文件中删除一个对象,而无需在 .txt 文件上手动执行此操作实际结果:对象未从 .txt 文件中删除
2 回答
慕婉清6462132
TA贡献1804条经验 获得超2个赞
open(path, "a")
将追加(添加)到文件中。假设您的文件是 json,您需要先读取内容,例如:
with open(path, "r") as f: content = json.load(f)
然后改变内容,删除你不想要的东西,最后写回文件:
with open(path, "w") as f: json.dump(content, f)
米琪卡哇伊
TA贡献1998条经验 获得超6个赞
您可以使用pop从字典中删除键及其值。在这种情况下book.pop(Name),应删除名称及其详细信息。
检查用户输入的名称是否在字典中(并且拼写正确)可能也是明智之举,否则在尝试弹出不存在的键时会出错。你可以这样做
input_response = input("would you like to remove someone from the registry?('Yes' or 'No')")
if input_response == "Yes":
who_delete = input("Who would you like to remove?")
if who_delete in books:
books.pop(who_delete)
else:
print(f'Name {who_delete} not in books, please choose a valid key from {list(books.keys())}')
添加回答
举报
0/150
提交
取消