Python - 读取 "BadGzipFile"文件时出现 Pandas ".json.gz"错误

标签 python json pandas gzip

我正在尝试从“.json.gz”文件中读取数据作为数据帧。我不断收到错误消息,表明它是“BadGzipFile”。但是,当我手动解压缩文件时(即只需在查找器中双击它),我就能够成功打开 json 文件。这让我相信该文件没问题,但是当我在 Python 中运行以下代码时,我收到“BadGzipFile”错误。

我对 .gzip 文件非常陌生,并且做了相当多的研究试图找出问题所在。到目前为止,我还没有成功。任何帮助将不胜感激!

这是我的代码:

import os
import json
import gzip

file_path = '/data/data_0_0_0.json.gz'

with gzip.open(file_path, 'rb') as f:
    df = pd.read_json(f, compression='gzip', lines=True)

这是我收到的错误:

BadGzipFile: Not a gzipped file (b'{"')

最佳答案

您的代码发生了什么:

with gzip.open(file_path, 'rb') as f:
    df = pd.read_json(f, compression='gzip', lines=True)

您正在打开 file_path 处的 Gzip 文件吗?然后你告诉 Pandas 你打开的东西 (f) 本身就是另一个 Gzip 文件。事实并非如此;这是一个 Json 文件。当它显示 BadGzipFile 并带有该起始括号时,它告诉您它找到的文件以括号而不是 Gzip file's magic number 开头。 .


您应该将其更改为使用 gzip 打开文件,然后直接读取生成的文件,或者让 Pandas 读取该文件。

第一个是:

with gzip.open(file_path, 'rb') as f:
    df = pd.read_json(f, lines=True)

第二个实际上更容易。因为 pd.read_jsoninfer the compression根据文件名的格式,并且文件以 .gz 结尾,您可以编写:

df = pd.read_json(file_path)

关于Python - 读取 "BadGzipFile"文件时出现 Pandas ".json.gz"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75438003/

相关文章:

python - 如何将字符串拆分为标记?

python - Scrapy - 如何使用 python 抓取网络链接中的网络链接?

java - 如何将 JSON 字段名称映射到不同的对象字段名称?

JQuery 不接受 JSON 为有效

python - 在 SQLAlchemy 查询中选择关系

Python - 隐式 boolean 比较

javascript - 如何在html5音视频播放器中回显php数组?

python - 如何让 Python 类返回一些数据而不是它的对象地址

python - 创建自定义日期范围,一天 22 小时 python

python - 根据列表值从数据框中提取行的正确方法