将python对象序列化为python源代码

Jus*_*ant 5 python serialization json code-generation

我有一个python字典,我想序列化为初始化该字典的键和值所需的python源代码。

我在寻找类似的东西json.dumps(),但是输出格式应该是Python,而不是JSON。

我的对象非常简单:这是一本字典,其值是以下值之一:

  1. 内置类型文字(字符串,整数等)
  2. 文字列表

我知道我可以自己构建一个,但是我怀疑有些情况涉及嵌套对象,关键字转义等。因此,我更喜欢使用已经解决了一些问题的现有库。

Mar*_*wis 3

在最一般的情况下,不可能将任意 Python 对象转储到 Python 源代码中。例如,如果该对象是套接字,则在新对象中重新创建完全相同的套接字是行不通的。

正如 aix 所解释的,对于简单的情况,repr明确设计为制作可重现的源表示。作为一个轻微的概括,pprint 模块允许通过PrettyPrinter类进行选择性定制。

如果你想要它更通用,并且你唯一的要求是获得可执行的Python源代码,我建议将对象pickle成字符串,然后生成源代码

obj = pickle.loads(%s)
Run Code Online (Sandbox Code Playgroud)

其中%s被 替换为repr(pickle.dumps(obj)).