如何使用 gzip 提取特定文件

How to extract specific file with gzip

我刚刚下载了一个.gz file,里面有很多文件夹和文件,其中有一个包含德语句子的.txt文件。

url = 'https://pcai056.informatik.uni-leipzig.de/downloads/corpora/{}'
filename = 'deu-be_web_2013_10K.tar.gz'

with gzip.open(filename, 'wb') as gz:
    download_url = url.format(filename)
    r = requests.get(download_url)
    gz.write(r.content)

我只需要 .txt 文件,我想知道如果可能的话,我如何才能只提取这个文件。我所能做的就是读入整个文件,然后将其写入一个 .txt 文件,但是它很乱并且包含很多不需要的文本。

with gzip.open(path, 'rb') as gz, open('something.txt', 'wb') as f:
    content = gz.read()
    f.write(content)

这不仅仅是一个 .gz 文件。它是一个 .tar.gz 文件,其中 tar 是一种将多个文件组合成单个文件的存档格式,gzip 用于压缩该单个文件。 gzip 只能提取单个 tar 文件,但是您需要一些东西来解释 tar 文件格式以提取其中包含的文件之一。

使用 tarfile,而不是 gzip。使用 "r:gz" 打开也会为您解压。