Python 的tarfile模块默认在提取过程中忽略错误,除非errorlevel
设置为1
or 2
(或者如果只需要打印错误消息)debug
。1
尝试使用 amkdir /tmp/foo && sudo chown root /tmp/foo && chmod a-w /tmp/foo
和 usingtarfile
来提取一个 .tar.gz 文件/tmp/foo
——你会看到你的 Python 代码根本没有抛出异常。文件不会被提取/tmp/foo
,仍然是一个空目录。
为什么会有这种行为?谁/什么从这种默认行为中受益?换句话说,在解压缩 tar 文件时,谁/什么想要忽略权限错误?