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

时间:2010-12-23 19:25:05

标签: python json serialization code-generation

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

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

我的对象非常简单:它是一个字典,其值为以下之一:

  1. 内置类型文字(字符串,整数等)
  2. 文字列表
  3. 我知道我可以自己构建一个,但我怀疑存在涉及嵌套对象,关键字转义等的极端情况,所以我更倾向于使用现有的库来解决已经解决的问题。

3 个答案:

答案 0 :(得分:3)

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

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

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

obj = pickle.loads(%s)

其中%srepr(pickle.dumps(obj))替换。

答案 1 :(得分:2)

repr(d)其中d是您的字典可能是一个开头(虽然没有解决您提到的所有问题)。

答案 2 :(得分:0)

您可以使用yaml

http://pyyaml.org/

YAML没有完全序列化到python源代码。但是yaml模块可以直接序列化和反序列化python对象。它是JSON的超集。

你究竟想做什么?