python - 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
获取存档文件内容的伪文件句柄,然后将其复制到您想要的任何位置。
推荐阅读
- python - 管理面板:TypeError:预期的 str、字节或 os.PathLike 对象,而不是列表
- angular - 无法以角度将值传递给组件
- python - 从第 28 行开始拆分 CSV 文件
- c# - Azure 应用服务上的 ASP.NET Core MVC Azure AD 身份验证循环
- android - 尽管 PagingSource 记录了正确的数据,但 Fragment 中的 Recycler View 没有显示任何数据
- css - 动态css网格布局,保持一些元素在同一行
- c# - Ryzen 与 i7 多线程性能对比
- python - 在 for 循环中安排
- google-cloud-platform - 数据流:Apache Beam 警告:apache_beam.utils.retry:使用指数退避重试:
- ssl - openssl_encrypt():使用空的初始化向量 (iv) 可能不安全且不推荐错误 phpmyadmin