我有一个 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/