为什么tarfile.extractall默认忽略错误?
Python的 tarfile 模块在解压文件时,默认情况下会忽略错误,除非你把 errorlevel
设置为 1
或 2
(如果只想打印错误信息,可以把 debug
设置为 1
)。
你可以试试先运行 mkdir /tmp/foo && sudo chown root /tmp/foo && chmod a-w /tmp/foo
,然后用 tarfile
在 /tmp/foo
这个目录下解压一个 .tar.gz 文件——你会发现你的Python代码根本没有抛出任何异常。实际上,文件并没有被解压到 /tmp/foo
,这个目录依然是空的。
为什么会这样呢?这种默认行为对谁或什么有好处呢?换句话说,谁会希望在解压tar文件时忽略权限错误呢?
1 个回答
2
顺便说一下,这种让人头疼的行为将在Python 2.7和3.2版本中进行修改。http://svn.python.org/view?view=rev&revision=76780 显然,之前之所以不处理错误,是因为想要让它更像GNU tar,而GNU tar是会忽略错误的。