【发布时间】:2021-08-07 11:29:10
【问题描述】:
这段代码读取和写入一个 jsonlines 文件。如何压缩它?我尝试直接使用gzip.open,但出现各种错误。
import json
def dump_jsonl(data, output_path, append=False):
"""
Write list of objects to a JSON lines file.
"""
mode = 'a+' if append else 'w'
with open(output_path, mode, encoding='utf-8') as f:
for line in data:
json_record = json.dumps(line, ensure_ascii=False)
f.write(json_record + '\n')
print('Wrote {} records to {}'.format(len(data), output_path))
def load_jsonl(input_path) -> list:
"""
Read list of objects from a JSON lines file.
"""
data = []
with open(input_path, 'r', encoding='utf-8') as f:
for line in f:
data.append(json.loads(line.rstrip('\n|\r')))
print('Loaded {} records from {}'.format(len(data), input_path))
return data
这是我正在做的压缩,但我无法阅读它。
def dump_jsonl(data, output_path, append=False):
with gzip.open(output_path, "a+") as f:
for line in data:
json_record = json.dumps(line, ensure_ascii = False)
encoded = json_record.encode("utf-8") + ("\n").encode("utf-8")
compressed = gzip.compress(encoded)
f.write(compressed)
【问题讨论】:
-
Python 中有很多内置库可以帮助压缩文件。 docs.python.org/3/library/archiving.html - 你在使用 gzip 时遇到了什么错误,你使用了什么代码?