tarfile 无法提取压缩文件夹

A compressed folder cannot be extracted by tarfile

对于用 python 编写的构建脚本,我需要提取 .tar.gz 存档 (this is Lua's source) 的内容。

tarfile documentation, an archive with such an extension可以这样解压,我把他们的example文件替换成我要解压的archive:

import tarfile

tar = tarfile.open("lua-5.3.5.tar.gz")
tar.extractall()
tar.close()

Python不过returns例外:

Traceback (most recent call last):
  File "test.py", line 2, in <module>
    tar = tarfile.open("lua-5.3.5.tar.gz")
  File "C:\Python37\lib\tarfile.py", line 1578, in open
    raise ReadError("file could not be opened successfully")
tarfile.ReadError: file could not be opened successfully

当然,我运行这个脚本与存档在同一个文件夹中,但它无法提取内容。

我们如何解决这个问题?

该文件实际上是一个 tar.gz 文件,因此您必须执行如下操作:

import tarfile
tar = tarfile.open("lua-5.3.5.tar.gz", "r:gz")
tar.extractall()
tar.close()
import tarfile

tar = tarfile.open("lua-5.3.5.tar.gz", "w|gz")
tar.extractall()
tar.close()

事实证明,在重新安装 Python 环境后(没有冒险,没有收获),它成功了。让我有点沮丧的是不明白是什么导致了错误,很可能是文件损坏了,但我经常更新我的包,这很奇怪。