tarfile.open()打开tar.gz文件必须显式指定moder:gz否则报OSError解压前须用os.path.normpath和isabs校验路径防穿越extractfile()可安全读取单个文件。tarfile.open() 打开 tar.gz 文件必须指定 moder:gz不加 mode 或写错模式比如只写 r会导致报错 OSError: Not a gzipped file哪怕文件后缀是 .tar.gz。Python 的 tarfile 不会自动根据后缀推断压缩方式必须显式声明。常见错误是直接 tarfile.open(a.tar.gz)结果在读取时才崩正确做法是import tarfilewith tarfile.open(archive.tar.gz, moder: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营销助手