js

json IO utility module.

useful method:

dataIO.js.is_json_file(abspath)[source]

Parse file extension.

  • *.json: uncompressed, utf-8 encode json file
  • *.gz: compressed, utf-8 encode json file
dataIO.js.lower_ext(abspath)[source]

Convert file extension to lowercase.

dataIO.js.load(abspath, default={}, enable_verbose=True)[source]

Load Json from file. If file are not exists, returns default.

Parameters:
  • abspath (string) – file path. use absolute path as much as you can. extension has to be .json or .gz (for compressed Json).
  • default – default dict(), if abspath not exists, return the default Python object instead.
  • enable_verbose (boolean) – default True, help-message-display trigger.

Usage:

>>> from dataIO import js
>>> js.load("test.json") # if you have a json file
Load from 'test.json' ...
    Complete! Elapse 0.000432 sec.
{'a': 1, 'b': 2}

中文文档

从Json文件中读取数据

Parameters:
  • abspath (字符串) – Json文件绝对路径, 扩展名需为 .json.gz, 其中 .gz 是被压缩后的Json文件
  • default – 默认 dict(), 如果文件路径不存在, 则会返回指定的默认值
  • enable_verbose (布尔值) – 默认 True, 信息提示的开关, 批处理时建议关闭
dataIO.js.dump(data, abspath, indent_format=False, float_precision=None, overwrite=False, enable_verbose=True)[source]

Dump Json serializable object to file. Provides multiple choice to customize the behavior.

Parameters:
  • data (dict or list) – Serializable python object.
  • abspath (string) – save as path, file extension has to be .json or .gz (for compressed Json)
  • indent_format (boolean) – default False, If True, then dump to human readable format, but it’s slower, the file is larger
  • float_precision (integer) – default None, limit flotas to N-decimal points.
  • overwrite (boolean) – default False, If True, when you dump to existing file, it silently overwrite it. If False, an alert message is shown. Default setting False is to prevent overwrite file by mistake.
  • enable_verbose (boolean) – default True, help-message-display trigger.

Usage:

>>> from dataIO import js
>>> data = {"a": 1, "b": 2}
>>> dump(data, "test.json", overwrite=True)
Dumping to 'test.json'...
    Complete! Elapse 0.002432 sec

中文文档

将Python中可被序列化的”字典”, “列表”以及他们的组合, 按照Json的编码方式写入文件 文件

参数列表

Parameters:
  • js (字典列表) – 可Json化的Python对象
  • abspath (字符串) – Json文件绝对路径, 扩展名需为 .json.gz, 其中 .gz 是被压缩后的Json文件
  • indent_format (“布尔值”) – 默认 False, 当为 True 时, Json编码时会对Key进行 排序, 并进行缩进排版。但是这样写入速度较慢, 文件体积也更大。
  • overwrite (“布尔值”) – 默认 False, 当为``True``时, 如果写入路径已经存在, 则会 自动覆盖原文件。而为``False``时, 则会打印警告文件, 防止误操作覆盖源文件。
  • float_precision (“整数”) – 默认 None, 当为任意整数时, 则会保留小数点后N位
  • enable_verbose (布尔值) – 默认 True, 信息提示的开关, 批处理时建议关闭
dataIO.js.safe_dump(data, abspath, indent_format=False, float_precision=None, enable_verbose=True)[source]

A stable version of dump(), this method will silently overwrite existing file.

There’s a issue with dump(): If your program is interrupted while writing, you got an incomplete file, and you also lose the original file. So this method write json to a temporary file first, then rename to what you expect, and silently overwrite old one. This way can guarantee atomic write.

中文文档

在对文件进行写入时, 如果程序中断, 则会留下一个不完整的文件。如果使用了覆盖式 写入, 则我们即没有得到新文件, 同时也丢失了原文件。所以为了保证写操作的原子性 (要么全部完成, 要么全部都不完成), 更好的方法是: 首先将文件写入一个临时文件中, 完成后再讲文件重命名, 覆盖旧文件。这样即使中途程序被中断, 也仅仅是留下了一个 未完成的临时文件而已, 不会影响原文件。

dataIO.js.pprint(data)[source]

Print Json in pretty human readable format.

There’s a standard module pprint, can pretty print python dict and list. But it doesn’t support sorted key, and indent doesn’t looks good.

Usage:

>>> from dataIO import js
>>> js.pprint({"a": 1, "b": 2})
{
    "a": 1,
    "b": 2
}

中文文档

以人类可读的方式打印可Json化的Python对象。