Python: How to decompress a GZIP file to an uncompressed file on disk?
我想在Python脚本中模拟
压缩的GZIP文件被解压缩并写为具有与原始GZIP文件相同的文件名的文件,而不带.gz扩展名。
file.abc.gz - > file.abc
使用gzip库如何做到这一点并不明显,文档中的所有示例都是用于压缩数据数组,而我还没有通过Google找到一个很好的例子。 任何人都可以建议吗? 在此先感谢您的帮助。
编辑:我已经尝试使用tarfile模块,但不幸的是它不起作用,我认为因为GZIP文件不是用tar创建的。
1 2 3 4 5 6 7 8 9 10 | # 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 |
1 2 3 4 | 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) |
这是官方文档中给出的示例的简单反转:
Example of how to GZIP compress an existing file:
1
2
3
4
5 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)
您可以将tarfile模块用于您所要求的内容。
例:
1 2 3 4 | import tarfile tar = tarfile.open("test.tar.gz") tar.extractall() tar.close() |