【问题标题】:pickle a dictonary in python in a readable format以可读格式腌制python中的字典
【发布时间】:2018-03-12 11:06:05
【问题描述】:

我在一个文件中有一个 python 字典,格式如下:

(dp0 S'测试' p1 S'测试1' p2 sS'测试2' p3 S'测试2' p4 sS'Starspy' p5 S'SHSN4N' p6 秒。

见: Save a dictionary to a file (alternative to pickle) in Python?

我想把它读回来。

根据链接中的问题,这是用泡菜保存的。但是,当我尝试用 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'测试' p1 S'测试1' p2 sS'测试2' p3 S'测试2' p4 sS'Starspy' p5 S'SHSN4N' p6 s。 ?

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

【问题讨论】:

  • 如果你想要一个人类可读的版本,为什么不改用 JSON?

标签: python dictionary format readable


【解决方案1】:

如果您想要可读的字典,请使用json,它内置在 python 中,输出很像字典。

【讨论】:

  • 很抱歉,您的代码在我的计算机上不起作用。它给了我一个错误。我的问题是我有一个带有嵌套字典的大文件,其中包含有人传递给我的许多层(因此我无法以其他格式保存数据)并且文件格式为 (dp0 S'Test' p1 S'Test1 ' p2 sS'Test2' p3 S'Test2' p4 sS'Starspy' p5 S'SHSN4N' p6 s. 这就是我想:1)学习如何以这种格式保存文件和 2)主要是为了能够打开我拥有的文件。
【解决方案2】:

问题在pickle 模块文档中得到解答:https://docs.python.org/2/library/pickle.html#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()
"(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?

【讨论】:

    【解决方案3】:

    我遇到的问题是版本问题。我使用的是版本 3,它适用于版本 2。

    在这种情况下,我可以创建一个具有我想要读取的文件中的格式的文件,我现在可以读取它。

    【讨论】:

      猜你喜欢
      • 2018-08-18
      • 1970-01-01
      • 2011-05-04
      • 2010-09-16
      • 1970-01-01
      • 2016-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多