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