【问题标题】:Error while unzipping a .gz file in python在 python 中解压 .gz 文件时出错
【发布时间】:2020-04-28 18:50:30
【问题描述】:

我正在尝试使用 python 3.8(也尝试过 3.7)和 gzip 库从 .gz 文件中提取文件(或解压缩它?这里不知道正确的命名法)在 Windows 上,但我收到以下错误:

gzip.BadGzipFile: Not a gzipped file (b'\r\n')

这是文件,所以错误是可重现的(这是一个公开的文件):

https://www.dropbox.com/s/2cs9ik9nj2tfijh/15_07_U_2020-01-24.CAT.gz?dl=0

为了提取它,我使用来自this question 的代码。代码是:

import gzip
import shutil
with gzip.open('15_07_U_2020-01-24.CAT.gz', 'rb') as f_in:
    with open('file.txt', 'wb') as f_out:
        shutil.copyfileobj(f_in, f_out)

另外,使用this other question 的代码,我可以读取并查看文件的内容:

for data in gzip.GzipFile(file):
    print(data)

这里,我在打印整个文件后遇到同样的错误。

因此,文件末尾的符号“\r\n”似乎导致了错误。但是我该如何处理呢?我可以忽略这个错误,或者以某种方式删除这些符号吗?

顺便说一句,我可以用 WinRAR 或 7z 毫无问题地提取文件。

【问题讨论】:

    标签: python compression gzip extract


    【解决方案1】:

    我最终通过使用gzip 提取文件并记录遇到的异常来解决这个问题。在我的情况下,异常并没有影响最终结果,并且提取正确完成。

    更新 python 3.10:似乎有一个 regression in Python 3.10 阻止 gzip 正常工作(这与我为我的特定文件获取的异常完全无关)。

    这种回归导致以下代码:

    for data in gzip.GzipFile(file):
        print(data)
    

    抛出以下错误:

    ValueError: readline of closed file
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-10
      • 1970-01-01
      • 2015-06-23
      相关资源
      最近更新 更多