读取gzip文件并写入文本文件

2024-04-25 12:00:48 发布

您现在位置:Python中文网/ 问答频道 /正文

如何读取包含JSON内容的gzip文件,然后将该内容写入文本文件

with open('.../notebooks/decompressed.txt', 'wb') as f_out:
    with gzip.open(".../2020-04/statuses.log.2020-04-01-00.gz", 'rb') as f_in:
        data = f_in.read()
        json.dumps(data)

错误:字节类型的对象不可JSON序列化

解压缩的.txt图像(前两行): enter image description here


Tags: 文件intxtjson内容dataaswith
1条回答
网友
1楼 · 发布于 2024-04-25 12:00:48

如果日志内容已经是json序列化格式,则只需按原样写入解压缩数据

import gzip
with gzip.open('.../2020-04/statuses.log.2020-04-01-00.gz', 'rb') as fin:
    with open('.../notebooks/decompressed.txt', 'wb') as fout:
        data = fin.read()
        fout.write(data)

如果文件很大,则导入shutil模块,并将read()和write()替换为:

shutil.copyfileobj(fin, fout)

如果要将JSON加载到对象中并重新序列化,则:

import gzip
import json

with gzip.open('.../2020-04/statuses.log.2020-04-01-00.gz', 'rb') as fin:
    with open('.../notebooks/decompressed.txt', 'w') as fout:
       obj = json.load(fin)
       json.dump(obj, fout)

如果日志文件是一系列JSON结构,每行一个,请尝试:

import gzip
with gzip.open('.../2020-04/statuses.log.2020-04-01-00.gz', 'rb') as fin:
    for line in fin:
        obj = json.loads(line)
        # next do something with obj

如果JSON太大而无法反序列化,那么请尝试ijson迭代hugh JSON结构

相关问题 更多 >