【问题标题】:How can I extract all .tar.gz files while maintaining the directory structure?如何在保持目录结构的同时提取所有 .tar.gz 文件?
【发布时间】:2019-02-15 18:49:00
【问题描述】:

我正在开发一个程序来解压缩/提取给定文件夹中的所有 .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 更改为要解压到的位置。
  • os.walk() 可能是更好的方法

标签: python python-3.x zip tar


【解决方案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()

【讨论】:

    猜你喜欢
    • 2013-03-16
    • 2012-08-17
    • 2021-12-29
    • 2013-04-13
    • 1970-01-01
    • 2016-07-08
    • 2017-04-07
    • 1970-01-01
    • 2014-02-12
    相关资源
    最近更新 更多