我正在尝试从“.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_json
将 infer the compression根据文件名的格式,并且文件以 .gz
结尾,您可以编写:
df = pd.read_json(file_path)
关于Python - 读取 "BadGzipFile"文件时出现 Pandas ".json.gz"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75438003/