如何使用Python打开一个json.gz.part文件?

s5a0g9ez  于 2023-01-08  发布在  Python
关注(0)|答案(1)|浏览(146)

我在一个目录中有很多json.gz文件,其中一些是json.gz.part。据说,在保存它们时,一些文件太大,它们被拆分了。
我试着像往常一样打开它们:

with gzip.open(file, 'r') as fin:
        json_bytes = fin.read()  
    json_str = json_bytes.decode('utf-8')            # 2. string (i.e. JSON)
    bb = json.loads(json_str)

但是当涉及到.gz.part文件时,我得到一个错误:

uncompress = self._decompressor.decompress(buf, size)

error: Error -3 while decompressing data: invalid code lengths set

我尝试了jiffyclub's解决方案,但得到以下错误:

_read_eof = gzip.GzipFile._read_eof

AttributeError: type object 'GzipFile' has no attribute '_read_eof'

编辑:
如果我一行一行地读,我就能读到大部分内容文件,直到我得到一个错误:

with gzip.open(file2,'r') as fin:        
        for line in fin: 
            print(line.decode('utf-8'))

打印大部分内容后,我得到:

error: Error -3 while decompressing data: invalid code lengths set

但是使用最后一种方法我无法将其内容转换为json文件。

yws3nbqq

yws3nbqq1#

import gzip
import shutil

# open the .gz file
with gzip.open('file.gz.part', 'rb') as f_in:
    # open the decompressed file
    with open('file.part', 'wb') as f_out:
        # decompress the .gz file and write the decompressed data to the decompressed file
        shutil.copyfileobj(f_in, f_out)

# now you can open the decompressed file
with open('file.part', 'r') as f:
    # do something with the file
    contents = f.read()

这段代码将打开.gz.part文件,解压缩数据,并将解压缩后的数据写入名为file.part的新文件。然后,您可以打开.part文件并读取其内容,就像处理任何其他文本文件一样。

相关问题