我的python词典中的文件中的格式:
(DP0 S'test' P1 s'test1' P2 ss'test2' P3 s'test2' P4 ss'starspy' P5 s'shsn4n' P6 s。
请参阅:将字典保存到python中的文件(替代品)?
我想回头读。
根据链接中的问题,已经创建了与泡菜一起保存它。但是,当我尝试用泡菜保存词典时,我获得的格式就不对应了。
例如,代码:
import pickle
mydict = {'a': 1, 'b': 2, 'c': 3}
output = open('myfile.dict', 'wb')
pickle.dump(mydict, output)
output.close()
生成带有内容的文件
€} q(x aqkx bqkx cqku。
我可以回信,但它没有文件的格式(与嵌套词典相对应)。所以,我有两个问题:
首先,如何用格式编写文件...(DP0S'test'P1s'test1'P2ss'test2'P3s'test2'P4ss'starspy'P5s'shsn4n'P6s。?
第二,如何使用该格式读取文件?
如果您想要可读的词典,则与json一起使用,它内置在python中,输出几乎就像词典。
pickle
模块文档中回答了问题:https://docs.python.org/2/library/pickle.html#data-data-stream-format
当前有3种不同的协议可以用于 腌制。
协议版本0是原始的ASCII协议,是向后的 与早期版本的Python兼容。
协议版本1是 旧的二进制格式,也与早期版本的 Python。
协议版本2在Python 2.3中引入。它提供 更有效地腌制新样式的课程。
无论您在开始时显示什么,它都是协议版本0,是默认版本。最后 - 二进制协议版本1或2。
只需指定协议版本号:
>>> pickle.dump({'hello': 'world'}, file('f.txt', 'wt'))
>>> file('f.txt', 'rt').read()
"(dp0nS'hello'np1nS'world'np2ns."
>>> pickle.dump({'hello': 'world'}, file('f.txt', 'wt'), 2)
>>> file('f.txt', 'rt').read()
'x80x02}qx00Ux05helloqx01Ux05worldqx02s.'
>>> pickle.dump({'hello': 'world'}, file('f.txt', 'wt'), 1)
>>> file('f.txt', 'rt').read()
'}qx00Ux05helloqx01Ux05worldqx02s.'
ps:为什么不使用可读格式,例如JSON?
我遇到的问题是版本的问题。我正在使用版本3,并且与版本2一起使用。
在这种情况下,我可以使用要读取的文件中的格式创建一个文件,现在可以阅读。