跳转到主要内容

读取JSON行(jl)文件,恢复损坏的文件

项目描述

PyPI Version Build Status Code Coverage

这是一个用于读取JSON行(.jl)文件的微型库,包括压缩和损坏的文件。

JSON lines是一种文本文件格式,其中每行是一个单独的json编码项。

为什么?

在Python中读取格式良好的JSON行文件是一行代码。但是文件可能会损坏:在某些点被截断(这发生在写入文件的过程被杀死时),或者由几个截断的部分拼接而成(这发生在过程再次向同一文件追加时)。处理所有这些情况并不容易,特别是如果文件被压缩。

json-lines为您处理所有这些情况!

安装

pip install json-lines

如果已安装ujson,则将其用于加速json解码(即使是压缩文件,这也是主要的性能瓶颈)。

用法

为了读取格式良好的json行文件,将打开的文件作为第一个参数传递给json_lines.reader。文件可以以文本或二进制模式打开,但如果以文本模式打开,则必须设置正确的编码

import json_lines

with open('file.jl', 'rb') as f:
    for item in json_lines.reader(f):
        print(item['x'])

此外还有一个辅助函数 json_lines.open,它可以识别“ .gz”和“ .gzip”扩展名,并用 gzip 打开它们。

with json_lines.open('file.jl.gz') as f:
    for item in f:
        print(item['x'])

通过将 broken=True 传递给 json_lines.readerjson_lines.open,可以启用处理损坏(在某处被截断)的文件。损坏的行将被跳过(仅记录警告),并从下一个有效位置继续读取。这既适用于压缩文件也适用于未压缩文件。

with json_lines.open('file.jl.gz', broken=True) as f:
    for item in f:
        print(item['x'])

许可证

许可证是 MIT。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

json-lines-0.5.0.tar.gz (4.3 kB 查看哈希)

上传时间

构建分布

json_lines-0.5.0-py2.py3-none-any.whl (6.8 kB 查看哈希)

上传时间 Python 2 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面