为什么tarfile.extractall默认忽略错误?

3 投票
1 回答
1435 浏览
提问于 2025-04-15 17:43

Python的 tarfile 模块在解压文件时,默认情况下会忽略错误,除非你把 errorlevel 设置为 12(如果只想打印错误信息,可以把 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是会忽略错误的。

撰写回答