我在多个文件夹中有 .gz 压缩文件,这些文件都位于名为“usa”的主文件夹中。我能够使用下面的代码提取单个文件。
import gzip
import shutil
source=r"C:\usauc300.dbf.gz"
output=r"C:\usauc300.dbf"
with gzip.open(source,"rb") as f_in, open(output,"wb") as f_out:
shutil.copyfileobj(f_in, f_out)
我到处搜索,但找不到与命令行选项等效的选项gzip -dr.....
这意味着“递归解压缩”,将遍历每个文件夹并将内容提取到同一位置,同时删除原始压缩文件。有谁知道如何使用 python 循环遍历文件夹中的文件夹,找到任何压缩文件并将它们解压缩到同一位置,同时用压缩文件替换解压缩文件?
我相信这是因为 gzip 永远不会对目录进行操作,它充当一种压缩算法,与我们可以压缩目录的 zip 和 tar 不同。 python对gzip的实现是对文件进行操作。然而,如果我们看看 os.walk 调用,目录树的递归遍历就很容易了。
(我没有测试过这个)
def gunzip(file_path,output_path):
with gzip.open(file_path,"rb") as f_in, open(output_path,"wb") as f_out:
shutil.copyfileobj(f_in, f_out)
def recurse_and_gunzip(root):
walker = os.walk(root)
for root,dirs,files in walker:
for f in files:
if fnmatch.fnmatch(f,"*.gz"):
gunzip(f,f.replace(".gz",""))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)