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"
我正在尝试从大 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()
内置方法