如何使用 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"
打开也会为您解压。
我刚刚下载了一个.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"
打开也会为您解压。