我想模仿Python脚本中gzip -d <file.gz>
的行为。
压缩的GZIP文件被解压缩并写为文件名,与原始GZIP文件的文件名相同,不带.gz扩展名。
file.abc.gz - &gt; file.abc
使用gzip库如何做到这一点并不明显,文档中的所有示例都是用于压缩数据数组,而我还没有通过Google找到一个很好的例子。任何人都可以建议吗?在此先感谢您的帮助。
编辑:我已经尝试使用tarfile模块进行下面的操作,但不幸的是它没有用,我认为因为GZIP文件不是用tar创建的。# get the zipped file's contents list, extract the file
with tarfile.TarFile(local_zipped_filename) as tar_file:
# list the contents, make sure we only extract the expected named file
members = tar_file.getmembers()
for member in members:
if member.name == filename_unzipped:
members_to_extract = [member]
tar_file.extractall(path=destination_dir, members=members_to_extract)
break # we've extracted our file, done
答案 0 :(得分:7)
import gzip, shutil
with gzip.open('file.abc.gz', 'r') as f_in, open('file.abc', 'wb') as f_out:
shutil.copyfileobj(f_in, f_out)
gzip
module提供了一个类似文件的对象,其中包含gzip文件的解压缩内容; shutil
module提供了一个方便的帮助,可以将内容从一个类似文件的对象复制到另一个。
这是the official documentation中给出的示例的简单反转:
如何GZIP压缩现有文件的示例:
import gzip import shutil with open('/home/joe/file.txt', 'rb') as f_in: with gzip.open('/home/joe/file.txt.gz', 'wb') as f_out: shutil.copyfileobj(f_in, f_out)
答案 1 :(得分:1)