流式换行符分隔的JSON I/O。

NewlineJSON的Python项目详细描述


流式换行符分隔的JSON I/O。

https://travis-ci.org/geowurster/NewlineJSON.svg?branch=masterhttps://coveralls.io/repos/geowurster/NewlineJSON/badge.svg?branch=master

示例

调用newlinejson.open()将返回一个类似于文件的对象,其行为类似于 Python的io.TextIOWrapper

importnewlinejsonasnljwithnlj.open('sample-data/dictionaries.json')assrc, \
        withnlj.open('out.json','w')asdst:forlineinsrc:dst.write(line)withopen('out.json')asf:print(f.read())){'field2':'l1f2','field3':'l1f3','field1':'l1f1'}{'field2':'l2f2','field3':'l2f3','field1':'l2f1'}{'field2':'l3f2','field3':'l3f3','field1':'l3f1'}{'field2':'l4f2','field3':'l4f3','field1':'l4f1'}{'field2':'l5f2','field3':'l5f3','field1':'l5f1'}

命令行界面

cli不是提供另一个实用程序,而是通过python -m newlinejson

$ python -m newlinejson --help
Usage: newlinejson [OPTIONS] COMMAND [ARGS]...

  NewlineJSON commandline interface.

  Common simple ETL commands for homogeneous data.

Options:
  --version  Show the version and exit.
  --help     Show this message and exit.

Commands:
  csv2nlj  Convert a CSV to newline JSON dictionaries.
  insp     Open a file and launch a Python interpreter.
  nlj2csv  Convert newline JSON dictionaries to a CSV.

包含的实用程序用于处理同构数据,这意味着 行具有相同的字段。目标是提供简单的数据转换工具 而不是更全面的套房

我不能用一个函数完成这个模块的所有工作吗?

差不多-这是最简单的换行分隔json api:

importjsondefreader(stream):forlineinstream:yieldjson.loads(line)withopen('sample-data/lists.json')assrc,open('outfile.json','w')asdst:forlineinreader(src):dst.write(json.dumps(line))

但它不能处理失败,每次需要使用它都必须 重新编写,这意味着它需要打包,这意味着它需要单元测试, 可能会更像Python,现在我们回到这个模块。是的 更容易,也更像Python,只要import newlinejson就知道它会 工作而不是多次解决同一个问题

为什么这比msgpack、protobuf或任何其他压缩二进制格式都好?

可能不是。如果你正在寻找一个模块来整合到一个 容量数据管道或带宽有限的环境 压缩二进制格式。如果使用少量本地数据 制作一次性产品、校对工作流或希望提供其他 命令行应用程序读/写stdin/stdout的I/O功能, 这个模块很容易使用。

这个模块的目标是在一个简单易用的 使用直观的方式,而不是提供高度优化的I/O。 内置的json库不够快,但换行分隔的json是正确的 为了解决您的问题,许多更快的json库中的一个可以在全局范围内使用 newlinejson.core.JSON_LIB = module或将json_lib=module设置为关键字 open()load()等中的参数。

安装

通过PIP:

$ pip install NewlineJSON

>;来自主机:

$ git clone https://github.com/geowurster/NewlineJSON.git
$cd NewlineJSON
$ python setup.py install

开发

安装:

$ pip install virtualenv
$ git clone https://github.com/geowurster/NewlineJSON
$cd NewlineJSON
$ virtualenv venv
$source venv/bin/activate
$ pip install -e .[test]$ py.test tests --cov newlinejson --cov-report term-missing
$ pep8 --max-line-length=95 newlinejson

许可证

LICENSE.txt

更改日志

CHANGES.md

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Android使用两个后台服务错误   解压缩HTTPInputStream时,java GZIPInputStream过早关闭   javax和javax的区别是什么。网ssl。密钥库和服务器。ssl。为SpringBoot应用程序指定密钥库时的密钥库属性   java生成两个JPanel,而我只需要一个   java深度链接从play store安装应用程序时获取数据   java 安卓应用程序在退出时未正确释放蓝牙   java正确使用setCellValueFactory   java开放JdbcTemplate连接处于只读模式?   使用Spring MVC创建服务时发生java错误   JavaFX获取安装在计算机中的特定应用程序的版本   SecureRandom的安全问题:PRNG在java 1.5中不一致   windows我可以创建一个独立的。带Inno设置的Java应用程序的exe安装程序?   如何使用JavaServlet下载csv文件?   java从生成的缓冲图像中添加图像作为jasper中的数据记录?   java日期和时间解析