【问题标题】:saving and deleting fileI/O保存和删除文件I/O
【发布时间】:2013-09-01 00:25:51
【问题描述】:

两部分问题。

首先,我怎样才能改变它(我试过使用'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 保存工作正常(据我所知)

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

【问题讨论】:

    标签: file-io for-loop dictionary python-3.x


    【解决方案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' 是字典。
    • 我不太明白你在第二部分所说的话。该文件尚未加载到我可以帮助...谢谢
    • @StandingBird 文件不能像内存中的数据结构那样容易操作。含义:将文件加载到字典中,进行删除,然后将字典写回文件。
    • @StandingBird 除了使用json,您还可以通过多种方式将字典写入文件。特别是如果你不喜欢json 的格式!
    • 好的,我明白你的意思。我不太清楚该怎么做。 (初学者,才几天学习)。你能在不告诉我确切代码的情况下指出我正确的方向吗(如果你明白我在说什么,哈哈)。
    猜你喜欢
    • 1970-01-01
    • 2013-06-26
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    • 2021-06-03
    相关资源
    最近更新 更多