我有一个像这样的名字/价值集:
for k,v in sorted(userlist):
print k, v
如何将其写入文件,将每个键放在一行上,如果文件存在,我希望它能够完全覆盖。
然后我会手动修改文件,然后我想把文件读回字典。
对不起这个新人。
答案 0 :(得分:3)
看一下http://docs.python.org/tutorial/inputoutput.html#reading-and-writing-files这应该可以让你快速了解如何在python中读取和写入文件
这是写文件:
f = open('/tmp/workfile', 'w')
delimiter = ' '
for k,v in sorted(list):
f.write(k +delimiter+ v)
这是阅读文件:
f = open('/tmp/workfile')
map = {}
while f:
r = f.readline().split()
map[r[0]]=r[1]
答案 1 :(得分:2)
您希望如何格式化?我会让你决定格式化
with open( filename, 'w' ) as file:
def write_to_file( (key, value) ):
#put your formatting down below
file.write( str( key ) + ", " + str( value ) )
map( write_to_file, sorted( userlist ) )
原始答案没有关闭文件。
以下是你所拥有的:
with open( filename, 'w' ) as file:
for k,v in sorted( userlist ):
file.write( str( k ) + ", " + str( v ) )
答案 2 :(得分:0)
简单:
import json
read = json.load
write = lambda file, obj : json.dump(obj, file, sort_keys=True, indent=4)
答案 3 :(得分:0)
似乎很不知道pickle输出通常很容易用手改变。可能因为许多其他序列化工具没有允许这样做的文件格式,但也出于安全原因(参见示例后的注释)
一个例子:
#import pickle
mydict = {}
mydict[0] = "100";
mydict[1] = "1000";
file = open('example.txt','w')
pickle.dump(mydict,f)
之后我将直接在texfile中更改textvalue :('10'变为'99','100'变为'999'
(dp0
I0
S'99'
p1
sI1
S'999'
p2
s.
然后,我们再次加载文件并显示结果:
f = open('example.txt','r')
mydict = pickle.load(f)
print mydict
我们确实得到了改变的输出:
{0: '99', 1: '999'}
我已经成功地尝试了很多数据类型和超过一百万行的文件。
但警告:更改文件结构会导致文件无法读取
只要先备份序列化数据,就可以这样做。