Как я могу извлечь все файлы .tar.gz при сохранении структуры каталогов? - PullRequest
0 голосов
/ 15 февраля 2019

Я работаю над программой для распаковки / распаковки всех .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 голосов
/ 15 февраля 2019

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