Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
.. image:: https://img.shields.io/pypi/v/json-lines.svg :target: https://pypi.python.org/pypi/json-lines :alt: PyPI Version
.. image:: https://travis-ci.org/TeamHG-Memex/json-lines.svg?branch=master :target: http://travis-ci.org/TeamHG-Memex/json-lines :alt: Build Status
.. image:: http://codecov.io/github/TeamHG-Memex/json-lines/coverage.svg?branch=master :target: http://codecov.io/github/TeamHG-Memex/json-lines?branch=master :alt: Code Coverage
This is a tiny library for reading JSON lines (.jl) files, including gzipped and broken files.
JSON lines <http://jsonlines.org/>
_ is a text file format
where each line is a single json encoded item.
Reading a well-formed JSON lines file is a one-liner in Python. But the file can be broken: cut at some point (this happens when the process writing it is killed), or concatenated from several cut pieces (this happend when the process started appending to the same file again). Handling all this cases is not easy, especially if the file is compressed.
json-lines handles all this cases for you!
::
pip install json-lines
If ujson <https://pypi.python.org/pypi/ujson>
_ is installed, it is used
to speed up json decoding (which is the main performance bottleneck
even for gzipped files).
In order to read a well-formed json lined file,
pass an open file as the first argument to json_lines.reader
.
The file can be opened
in text or binary mode, but if it's opened in text mode, the encoding
must be set correctly::
import json_lines
with open('file.jl', 'rb') as f:
for item in json_lines.reader(f):
print(item['x'])
There is also a helper function json_lines.open
that recognizes
".gz" and ".gzip" extensions and opens them with gzip
::
with json_lines.open('file.jl.gz') as f:
for item in f:
print(item['x'])
Handling broken (cut at some point) files is enabled by passing broken=True
to json_lines.reader
or json_lines.open
.
Broken lines are skipped (only logging a warning), and reading continues
from the next valid position.
This works both for compressed and uncompressed files::
with json_lines.open('file.jl.gz', broken=True) as f:
for item in f:
print(item['x'])
License is MIT.
FAQs
Reading JSON lines (jl) files, recover broken files
We found that json-lines demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.