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

时间:2014-03-22 21:29:58

标签: python text dictionary

[Running Python 2.7 on MacOSX]

嘿那里,

我试图从/向同一个文件读取和写入。 我的计划是,基本上我将阅读文本文件的内容,将其放入字典中,然后编辑该字典,然后将其放回文本文件中,以便在其他地方读入字典。

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

我想做的一个例子:

Apple  Green
Lemon  Yellow
Grape  Purple

现在我需要将这个转换成字典,如何,让它称之为水果

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

现在我们想将Apple的颜色改为Red?

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

最后将它放回文本文件中/覆盖以前的文本文件,以便稍后可以在其他地方打开并制作成新的字典使用:

Apple  Red
Lemon  Yellow
Grape  Purple


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

谢谢,
zahz

1 个答案:

答案 0 :(得分:2)

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

d = {}
with open(filename) as f:
    for line in f.read().split('\n'):
        key, value = line.split()
        d[key] = value

更简洁的方法来做同样的事情:

d = dict(map(str.split, open(filename)))

这没有显式地.close带有with-block的文件,而Python会在垃圾收集IIRC时关闭文件。

写出文件同样简单:

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

或者再次,更简洁:

open(filename, 'w').write('\n'.join('{}  {}'.format(key, d[key]) for key in d))

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