以可读的格式在python中腌制一个dictonary

时间:2017-09-30 22:15:49

标签: python dictionary format readable

我在文件中有一个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 秒。 ?

其次,如何读取具有该格式的文件?

3 个答案:

答案 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.在这种情况下,我可以使用我想要阅读的文件中的格式创建一个文件,现在我可以阅读它了。非常感谢!!!