如何允许用户通过 Python 使用 Json 从 .txt 文件中删除对象

问题总结

我制作了这个地址簿,将用户输入转储到 .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 code

import json


book = {}


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 文件中删除


动漫人物
浏览 104回答 2
2回答

慕婉清6462132

open(path, "a")将追加(添加)到文件中。假设您的文件是 json,您需要先读取内容,例如:with open(path, "r") as f:     content = json.load(f)然后改变内容,删除你不想要的东西,最后写回文件:with open(path, "w") as f:     json.dump(content, f)

米琪卡哇伊

您可以使用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())}')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python