tarfile.open()打开tar.gz文件必须显式指定mode='r:gz',否则报OSError;解压前须用os.path.normpath和isabs校验路径防穿越,extractfile()可安全读取单个文件。tarfile.open() 打开 tar.gz 文件必须指定 mode='r:gz'不加 mode 或写错模式(比如只写 'r')会导致报错 OSError: Not a gzipped file,哪怕文件后缀是 .tar.gz。Python 的 tarfile 不会自动根据后缀推断压缩方式,必须显式声明。常见错误是直接 tarfile.open('a.tar.gz'),结果在读取时才崩;正确做法是:import tarfilewith tarfile.open('archive.tar.gz', mode='r:gz') as tf: tf.extractall()'r:gz' 表示以 gzip 方式读取 tar 流;'r:bz2' 和 'r:xz' 同理如果用 'r',它只尝试 raw tar,遇到 gzip 头就失败Windows 上路径含中文时,extractall() 可能解出乱码名,需额外处理 encoding 参数extractall() 默认解压到当前目录,路径穿越风险要手动过滤tarfile 不做路径安全检查,恶意包里含 ../../../etc/passwd 这种路径会真实写入系统关键位置。生产环境必须校验成员路径。推荐在 extractall() 前先遍历 getmembers(),过滤掉非相对路径:立即学习"Python免费学习笔记(深入)"; 蝉妈妈AI 电商人专属的AI营销助手
相关推荐
troy1284 分钟前
Python 进阶提升(十二):自动化测试与 DevOps 实战IvorySQL30 分钟前
PostgreSQL 日报|大模型破解在线校验和(9 月 15 日)ynchyong32 分钟前
SQLAlchemy 更新操作:values() 与 ordered_values() 的隐藏差异statistican_ABin1 小时前
中国互联网与数字生活分析报告—基于1990-2023年世界银行互联网数据的多维度分析“AI国潮设计-小江”1 小时前
【Python/SDXL实战】潮汕国潮IP视觉落地:普宁美食猫IP & 创意甜品设计(附ComfyUI工作流思路)Leon-Ning Liu1 小时前
Oracle 19c ASMB 进程 PGA 内存泄漏排查实战 (Bug 38610635)步行cgn1 小时前
Spring 注入 null 和空字符串详解Allen_LVyingbo1 小时前
医疗人工智能项目全生命周期管理系统:监管知识建模、工程实现与实证评估(下)草莓熊Lotso1 小时前
【Redis 进阶】主从复制深度解析:从配置落地到 PSYNC 同步原理wuhuhuan2 小时前
Case Generator 平台升级