如何在维护目录结构的同时提取所有.tar.gz文件?

时间:2019-02-15 18:49:01

标签: python python-3.x zip tar

我正在开发一个程序,用于解压缩/解压缩给定文件夹中的所有.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()

1 个答案:

答案 0 :(得分:1)

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.

所以:

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()