Python的tarfile模块在提取期间忽略错误默认,除非errorlevel
设置为1
或2
(或{{1}如果只需要打印错误消息,则转到debug
。
尝试执行1
并使用mkdir /tmp/foo && sudo chown root /tmp/foo && chmod a-w /tmp/foo
在tarfile
上提取.tar.gz文件 - 您将看到您的Python代码完全没有例外。 not 的文件已经通过/tmp/foo
提取,而/tmp/foo
仍然是一个空目录。
为什么会这样?这种默认行为有哪些/有什么好处?换句话说,在解压缩tarfile时,只有谁/什么会想要忽略权限错误?
答案 0 :(得分:2)
FWIW,这个讨厌的行为将在Python 2.7和3.2中改变。 http://svn.python.org/view?view=rev&revision=76780显然忽略之前错误的原因更像是GNU tar,它忽略了错误。