python - 如何在保持目录结构的同时提取所有 .tar.gz 文件?
问题描述
我正在开发一个程序来解压缩/提取.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()
解决方案
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()
推荐阅读
- python - 通过 URL 的路径解析
- python - 如何访问函数结果中的记录或 frecord 变量,以便我可以使用它来函数提交?
- reactjs - 我们可以在 AsyncStorage 中有监听器吗?
- javascript - 夏令时区的 react-native-modal-datetime-picker 问题
- android - Android键盘工具栏通过调整调整大小切断了视图的底部
- json - 解析 Multipart/Form 消息并处理
- reactjs - 如何使用 outsideClick 功能到另一个文件模态元素
- ruby-on-rails - Resque 工作人员命令未显示任何信息
- css - 如何使用 Material UI 表格设置一个粘性页脚?
- node.js - 如何将 string[] 作为参数传递给solidity函数?