我在文件中有一个python字典,格式如下:
(DP0 S'Test” P1 S'Test1' P2 sS'Test2' P3 S'Test2' P4 sS'Starspy” P5 S'SHSN4N” P6 第
请参阅: Save a dictionary to a file (alternative to pickle) in Python?
我想读回来。
根据链接中的问题,这已经创建了保存它与pickle。但是,当我尝试用pickle保存字典时,我获得的格式不对应。
例如,代码:
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。
我可以回读它,但它没有我的文件格式(对应于嵌套字典)。所以,我有两个问题:
首先,如何编写格式为...的文件(dp0 S'Test” P1 S'Test1' P2 sS'Test2' P3 S'Test2' P4 sS'Starspy” P5 S'SHSN4N” P6 秒。 ?
其次,如何读取具有该格式的文件?
答案 0 :(得分:1)
如果您想要可读的词典,那么请使用json内置到python中,输出就像字典一样。
答案 1 :(得分:0)
pickle
模块文档中回答了这个问题:https://docs.python.org/2/library/pickle.html#data-stream-format
目前有3种不同的协议可供使用 酸洗。
协议版本0是原始的ASCII协议,是向后的 与早期版本的Python兼容。
协议版本1是 旧的二进制格式,也与早期版本兼容 蟒蛇。
Python 2.3中引入了协议版本2。它提供 更有效地腌制新式课程。
无论您在开始时显示什么,它都是协议版本0,并且是默认值。最后 - 二进制协议版本1或2.
只需指定协议版本号:
>>> pickle.dump({'hello': 'world'}, file('f.txt', 'wt'))
>>> file('f.txt', 'rt').read()
"(dp0\nS'hello'\np1\nS'world'\np2\ns."
>>> pickle.dump({'hello': 'world'}, file('f.txt', 'wt'), 2)
>>> file('f.txt', 'rt').read()
'\x80\x02}q\x00U\x05helloq\x01U\x05worldq\x02s.'
>>> pickle.dump({'hello': 'world'}, file('f.txt', 'wt'), 1)
>>> file('f.txt', 'rt').read()
'}q\x00U\x05helloq\x01U\x05worldq\x02s.'
PS:为什么不使用可读格式,例如JSON?
答案 2 :(得分:0)
我遇到的问题是版本问题。我使用的是版本3,它适用于版本2.在这种情况下,我可以使用我想要阅读的文件中的格式创建一个文件,现在我可以阅读它了。非常感谢!!!