Python 如何从文件中读取、转换为字典并写入同一文件

Python 如何从文件中读取、转换为字典并写入同一文件,python,text,dictionary,Python,Text,Dictionary,嘿,那里 我正在尝试从同一个文件读写。 我的计划是,基本上我将读取文本文件的内容,将其放入词典,然后编辑此词典,然后将其放回文本文件,以便在其他地方读取词典 我以前没有做过类似的事情,所以我需要一些想法,也许是视觉上的例子(我会非常感激)。 我想做的一个例子: [Running Python 2.7 on MacOSX] 现在我需要把它转换成一本字典,我们称之为“水果” Apple Green Lemon Yellow Grape Purple 现在我们想把苹果的颜色改成红色 frui

嘿,那里

我正在尝试从同一个文件读写。 我的计划是,基本上我将读取文本文件的内容,将其放入词典,然后编辑此词典,然后将其放回文本文件,以便在其他地方读取词典

我以前没有做过类似的事情,所以我需要一些想法,也许是视觉上的例子(我会非常感激)。

我想做的一个例子:

[Running Python 2.7 on MacOSX]
现在我需要把它转换成一本字典,我们称之为“水果”

Apple  Green
Lemon  Yellow
Grape  Purple
现在我们想把苹果的颜色改成红色

fruit = {'Apple' : 'Green', 'Lemon' : 'Yellow', 'Grape' : 'Purple'}
最后将其放回文本文件/覆盖以前的文本文件,以便以后可以在其他地方打开并制作成新的词典以供使用:

fruit = {'Apple' : 'Red', 'Lemon' : 'Yellow', 'Grape' : 'Purple'}

我真正需要的是找到最好的方法,我还没有做任何尝试,所以我正在寻求一些建议最后一步,将字典转换回那种格式是我无法做到的。

谢谢,

zahz

将文件读入字典非常简单。下面是一个简单的方法:

Apple  Red
Lemon  Yellow
Grape  Purple
做同样事情的更简洁的方法:

d = {}
with open(filename) as f:
    for line in f.read().split('\n'):
        key, value = line.split()
        d[key] = value
这不会显式地
。关闭带有with块的文件,而Python会在垃圾收集IIRC时关闭该文件

写出文件也同样简单:

d = dict(map(str.split, open(filename)))
或者更简洁地说:

with open(filename, 'w') as f:
    for key, value in d.items():
        f.write('{}  {}\n'.format(key, value))

这采用了一种不同的方法,将整个字典写成一个字符串,迭代版本一次写出一行。哪一个更好取决于你。

你提到的这三个步骤似乎是一个合理的方法。我知道,但我似乎无法做到这一点。特别是将其转换回原始格式,其余的我不应该有问题。您希望文本文件是人类可读的还是仅由Python程序可读?对于后者,您可以使用.OrderedDict可能有点用处,但不是必需的。您需要保留顺序吗?还是不要紧?
f.truncate()
w
模式下打开文件时不需要,因为它已经覆盖了文件。啊,谢谢您的回答。我通常出于习惯把它放在那里。删除:)答案已接受。谢谢你,你用不同的方法解释得很好。有帮助。
open(filename, 'w').write('\n'.join('{}  {}'.format(key, d[key]) for key in d))