如何提取所有的.tar.gz文件并保留目录结构?

3
我正在编写一个程序,用于在给定文件夹中解压缩/提取所有的.tar.gz文件。该文件夹可以有几个子目录,并且每个子目录都有多个.tar.gz文件。尽管我试图提取所有这些文件,但是在保持文件夹结构方面遇到了一些问题。
我的当前代码如下:extractall()似乎只能提取到当前工作目录,并且我无法确定如何保持目录结构。
for zipped_file in pathlib.Path(path).glob('**/*.tar.gz'):
    tar = tarfile.open(zipped_file, 'r:gz')
    tar.extractall()
    tar.close()

在解压之前,将CWD更改为您要提取到的位置。 - Scott Hunter
os.walk() 可能是更好的方法。 - Chris_Rands
1个回答

2

https://docs.python.org/3/library/tarfile.html

TarFile.extractall(path=".", members=None, *, numeric_owner=False)
    Extract all members from the archive to the current working directory or directory path.

So:

import os

for path, directories, files in os.walk('/foo/bar'):
    for f in files:
        if f.endswith(".tar.gz"):
            tar = tarfile.open(os.path.join(path,f), 'r:gz')
            tar.extractall(path=path)
            tar.close()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接