Python:Unable 仅从 tar 中提取特定文件夹

Python:Unable to extract only specific folders from a tar

我正在尝试从大 tar 文件中提取我感兴趣的特定文件夹。

import  tarfile
import os

list_dir = []
models = ["usb","test"]
with tarfile.open("build_today.tar.gz") as tar:
for tarinfo in tar.getmembers():
    if tarinfo.name.startswith(os.path.join("build_today","pips")):
        for model in models:
            if tarinfo.name.startswith(os.path.join("build_today","pips",model,"")):
                list_dir.append(tarinfo.name)
    elif tarinfo.name.startswith(os.path.join("build_today","objects")):
        for model in models:
            if tarinfo.name.startswith(os.path.join("build_today","objects",model,"")):
                list_dir.append(tarinfo.name)
    else:
        list_dir.append(tarinfo.name)
print list_dir
tar.extractall(members=list_dir)

我可以打印 'list_dir',在那里我可以看到我期待的内容。但是解压失败

失败并显示错误:

Traceback (most recent call last):
File "tar.py", line 18, in <module>
tar.extractall(members=list_dir)
File "/grid/common/pkgs/python/v2.7.10/lib/python2.7/tarfile.py", line 2067, in extractall
if tarinfo.isdir():
AttributeError: 'str' object has no attribute 'isdir'

请帮忙!

初步分析,问题似乎出在这里:

list_dir.append(tarinfo.name)

此处您将文件名附加为字符串。相反,您需要具有 .isdir() 内置方法

的 "file object"