用于读取和写入.son文件的工具
son的Python项目详细描述
SON顺序对象表示法
这是什么?
son是一种基于JSON并添加一个
受YAML启发的特性:对象与
---
。可选地,分隔符===
可以在每个son文件中使用一次来分隔
元数据。
为什么son?
虽然json非常适合存储结构化数据,但它本质上是不可能的 将数据的新部分添加到文件中而不先读取它。上的yaml文件 另一方面,由{{CD1}}定界符可自扩展,但具有灵活性。 YAML提供的功能使得文件解析效率低下因此他们不适合 存储大量数据
son通过允许json对象与---
连接来填补空白。它
从而将json的速度和效率与顺序扩展性结合起来
山药,见example它进一步增加了从
使用===
的实际数据。
son不允许not覆盖数据。为了避免意外数据丢失, metada只能写入新文件,而数据只能附加到文件
谁需要这个?
son源于存储生成的计算数据的需要 一部分一部分地在计算机上。要求是:
- 可能被人读到
- 可以存储任意数据结构,包括元数据,
- 易于计算机编写和分析,
- 高效地解析以允许大小高达GB的文件(使用YAML解析需要永远的时间)
- 循序渐进、廉洁,
- 抗数据丢失。
示例
这是一个有效的son字符串:
{"purpose":"storebiographydata","version":0.1}==={"first name":"Hildegard","secondname":"Kneef","age":93}---{"firstname":"Wiglaf","secondname":"Droste","age":57}
它将被解析为元数据对象,以及包含
importsonmetadata,data=son.load('file.son')
变更日志
v.0.3.2:修复在ipython
控制台中交互工作的问题
v.0.3.1:在读取文件之前通知,这在需要一些时间时更有意义
v.0.3.0:支持读取压缩的.bz2
和.gz
文件
v.0.2.5:progressbar仅在连接终端时显示(.isatty()
)
v.0.2.4:没有外部依赖关系的progressbar
v.0.2.3:progress.bar
打印到stdout
,而不是stderr
v.0.2.2:可选地保持详细,并显示带有progress
包的progressbar(可选依赖项,使用pip install son[progress]
安装)