序列化库或hipack交换格式
hipack的Python项目详细描述
hipack是一个python模块,用于HiPack 序列化格式。该api有意与标准的api相似 json和pickle模块。
功能:
支持读取和写入HiPack version 1。这个 还实现了以下扩展:
(请注意,HEPS中定义的扩展在 作为建议进行讨论。)
小型的、自包含的、纯python实现。
与Python2.6(或更新版本)和3.2(或更新版本)兼容。
用法
给定以下输入文件:
# Configuration file for SuperFooBar v3000 interface { language: "en_US" panes { top: ["menu", "toolbar"] # Optional commas in lists # The colon separating keys and values is optional bottom ["statusbar"] } ☺ : True # Enables emoji Unicode→Suþþorteð? : "Indeed, Jürgen!" } # Configure plug-ins plugin: { preview # Whitespace is mostly ignored { enabled: true timeout: 500 # Update every 500ms } }
注意,键和值之间的:分隔符是可选的,并且 可以省略。另外,请注意空格(包括新行)是如何 完全没有意义,结构只能用大括号来确定 和括号。最后但并非最不重要的是,有效的键是任何unicode字符 不包含空格或冒号的序列。
以下代码可用于将其读入python字典:
importhipackwithopen("superfoobar3000.conf","rb")asf:config=hipack.load(f)
转换按预期工作:
- 节被转换成字典。
- 键被转换为字符串。
- 双引号中的文本将转换为字符串。
- 封装在{ }中的节将转换为字典。
- 封装在[ ]中的数组将转换为列表。
- 数字转换为int或float,以较大者为准 适当的。
- 布尔值转换为bool。
以下内容可用于将python字典转换为其文本 表示:
users={"peter":{"uid":1000,"name":"Peter Jøglund","groups":["wheel","peter"],},"root":{"uid":0,"groups":["root"],}}importhipacktext=hipack.dumps(users)
生成文本表示时,每个字典的键将 进行排序,以确保生成的输出是稳定的。字典 前面的片段将以如下文本形式编写:
peter: { name: "Peter Jøglund" groups: ["wheel" "peter"] uid: 1000 } root: { groups: ["root"] uid: 0 }
安装
稳定版本被上传到PyPI,所以 可以使用pip:
安装和升级它们pip install hipack
或者,您可以自行安装开发版本- 直接从git存储库:
pip install -e git://github.com/aperezdc/hipack-python