[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
答案 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))
这采用了一种不同的方法,将整个字典写成一个字符串,其中迭代版本一次将其写出一行。哪一个更好取决于你。