如何解决python在从文件中提取文件时出错
Python 代码:
import tarfile,os
import sys
def extract_system_report (tar_file_path):
extract_path = ""
tar = tarfile.open(sys.argv[1])
for member in tar.getmembers():
print ("member_name is: ")
print (member.name)
tar.extract(member.name,"./crachinfo/")
extract_system_report(sys.argv[1])
>> python tar_read.py /nobackup/deepakhe/POLARIS_POJECT_09102019/hackathon_2021/a.tar.gz
member_name is:
/bootflash/.prst_sync/reload_info
Traceback (most recent call last):
File "tar_read.py",line 38,in <module>
extract_system_report(sys.argv[1])
File "tar_read.py",line 10,in extract_system_report
tar.extract(member.name,"./crachinfo/")
File "/auto/pysw/cel8x/python64/3.6.10/lib/python3.6/tarfile.py",line 2052,in extract
numeric_owner=numeric_owner)
File "/auto/pysw/cel8x/python64/3.6.10/lib/python3.6/tarfile.py",line 2114,in _extract_member
os.makedirs(upperdirs)
File "/auto/pysw/cel8x/python64/3.6.10/lib/python3.6/os.py",line 210,in makedirs
makedirs(head,mode,exist_ok)
File "/auto/pysw/cel8x/python64/3.6.10/lib/python3.6/os.py",line 220,in makedirs
mkdir(name,mode)
PermissionError: [Errno 13] Permission denied: '/bootflash'
我正在指定要提取的文件夹,但似乎仍在尝试在根目录中创建一个文件夹。这种行为是预期的吗?我可以在文件管理器中很好地提取这个 tar 文件。有没有办法在python中处理这个问题?
解决方法
我正在指定要提取的文件夹,但似乎仍在尝试在根目录中创建一个文件夹。这种行为是预期的吗?
是的。提供的路径只是一个“当前目录”,而不是“监狱”。文档甚至特别警告:
文件可能是在路径之外创建的,例如具有以 "/"
开头的绝对文件名或以两个点 ".."
开头的文件名的成员。
我可以在文件管理器中很好地提取这个 tar 文件。有没有办法在python中处理这个问题?
使用 extractfile
获取存档文件内容的伪文件句柄,然后将其复制到您想要的任何位置。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。