File io 保存和删除文件I/O

File io 保存和删除文件I/O,file-io,for-loop,dictionary,python-3.x,File Io,For Loop,Dictionary,Python 3.x,问题分为两部分 首先,我如何改变它(我试过使用'for',但我想不出来),使它像这样保存; “key-value”而不是“{key:value}” with open("phonebook.txt", "w") as x: json.dump(a, x) 第二,如何使用用户输入从文件中删除。 我看不出有什么办法可以把它改为从文件中删除,而不是删除dict'a' name = input("enter name of contact you want to delete: ") if n

问题分为两部分

首先,我如何改变它(我试过使用'for',但我想不出来),使它像这样保存; “key-value”而不是“{key:value}”

with open("phonebook.txt", "w") as x:
    json.dump(a, x)
第二,如何使用用户输入从文件中删除。 我看不出有什么办法可以把它改为从文件中删除,而不是删除dict'a'

name = input("enter name of contact you want to delete: ")
if name in a:
    del a[name]
编辑。这就是我现在所做的,但它没有达到预期的效果(我还尝试在x所在的位置添加.readlines,但它只是得到了错误)

def save(a):
    with open("phonebook.txt", "w") as x:
        for k in a:
            json.dump(str(k)+" "+str(a[k]), x)

def load():
    a = {}
    with open("phonebook.txt", "r") as f:
        for l in f:
            a[l[0]] = l[1]
        print (a)
def save工作正常(就我所知)

我也试过c=l.split()和a[c[0]=c[1]。只是不想工作!

第一部分 这不是JSON格式。如果需要其他内容,请不要使用它。使用纯文本文件,如

    with open("phonebook.txt","w") as file :
        for key, value in a.items() :
            file.write(str(key)+" "+str(value))
第二部分 看起来您已将文件加载到字典
a
。在这种情况下,您只需在删除后将字典
a
写回文件。如果您尚未将文件加载到字典中,则可以使用以下方法执行此操作:

    a= {}
    with open("phonebook.txt") as file :
        for line in file.readlines() :
            content= line.split()
            a[content[0]]= content[1]
第一部分 这不是JSON格式。如果需要其他内容,请不要使用它。使用纯文本文件,如

    with open("phonebook.txt","w") as file :
        for key, value in a.items() :
            file.write(str(key)+" "+str(value))
第二部分 看起来您已将文件加载到字典
a
。在这种情况下,您只需在删除后将字典
a
写回文件。如果您尚未将文件加载到字典中,则可以使用以下方法执行此操作:

    a= {}
    with open("phonebook.txt") as file :
        for line in file.readlines() :
            content= line.split()
            a[content[0]]= content[1]

我使用json是因为“a”是一本字典。我不太明白你在第二部分说的话。文件还没有加载到a中,这是我可以在帮助下做的。。Thanks@StandingBird文件不能像内存中的数据结构那样容易操作。意思是:将文件加载到字典中,进行删除,然后编写字典back到文件。@StandingBird除了使用
json
外,你还可以用很多方法为文件编写字典。特别是如果你不喜欢
json
的格式!好吧,我明白你的意思。不过我不太知道怎么做。(初学者,只需要几天的学习时间).你能告诉我正确的方向而不告诉我确切的代码吗(如果你明白我说的话lol).我使用json是因为“a”是一本字典。我不太明白你在第二部分说的话。该文件尚未加载到a中,这是我可以在帮助下做的。。Thanks@StandingBird文件不能像内存中的数据结构那样容易操作。意思是:将文件加载到字典中,进行删除,然后编写字典回到文件。@StandingBird除了使用
json
外,你还可以用很多方法为文件编写字典。特别是如果你不喜欢
json
的格式!好吧,我明白你的意思。不过我不太知道怎么做。(初学者,只需要几天的学习时间).你能告诉我正确的方向而不告诉我确切的代码吗(如果你明白我说的lol)。