python - 提取给定目录中具有目录路径的所有文件

标签 python extract tar

我有一个 tar 存档,其中有一个目录,我需要将其提取到给定目录中。 例如:我有一个目录

TarPrefix/x/y/z

在 tar 存档中,我想将其解压缩到给定的目标目录中,例如:extracted/a/此目录应包含目录 TarPrefix/x/y/z 中包含的所有文件和目录。

subdir_and_files = [  tarinfo for tarinfo in tar.getmembers()
                      if tarinfo.name.startswith("subfolder/")
                   ]

获取目录路径“subfolder/”中所有成员的列表,然后使用 tar.extractall(extracted/a,subdir_and_files) 提取它 但它会提取所有成员及其目录路径 例如,这会导致 extracted/a/x/y/z。 你能帮我把这些文件解压到给定的文件夹中吗?

最佳答案

看起来您可能已经找到了答案,但无论如何这是我的版本:

import sys, tarfile

def get_members(tar, prefix):
    if not prefix.endswith('/'):
        prefix += '/'
    offset = len(prefix)
    for tarinfo in tar.getmembers():
        if tarinfo.name.startswith(prefix):
            tarinfo.name = tarinfo.name[offset:]
            yield tarinfo

args = sys.argv[1:]

if len(args) > 1:
    tar = tarfile.open(args[0])
    path = args[2] if len(args) > 2 else '.'
    tar.extractall(path, get_members(tar, args[1]))

关于python - 提取给定目录中具有目录路径的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8259769/

相关文章:

python - 在 pygame 中暂停游戏和用户输入

python - 如何使此枚举类型支持迭代?

excel - 从单个单元格中提取以逗号分隔的数据

c++ - append 到 gzip 压缩的 Tar-Archive

python - 有没有办法让函数内部的函数知道传递给父函数的变量

python - 中值组合适合 python 中的图像

javascript - 如何从多个URL中提取相同的元素并保存在文件中?

java - double -> 提取整数

java - 在 java 中使用 Apache 保存目录结构

windows - 如何在 Windows 中创建 tar.gz 归档文件?