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

发布于 2024-08-16 21:45:16 字数 634 浏览 8 评论 0原文

Python 的 tarfile 模块默认情况下会忽略提取过程中的错误,除非将 errorlevel 设置为 12(或将 debug 设置为 1 code> 如果只需要打印错误消息)。

尝试执行 mkdir /tmp/foo && sudo chown root /tmp/foo && chmod aw /tmp/foo 并使用 tarfile 通过 /tmp/foo 提取 .tar.gz 文件 - 您将看到您的 Python 代码抛出了异常毫无例外。这些文件不会通过/tmp/foo提取,它仍然是一个空目录。

为什么会有这种行为?谁/什么会从这种默认行为中受益?换句话说,在解压缩 tar 文件时,谁/什么想要忽略权限错误?

Python's tarfile module ignores errors during extraction by default, unless errorlevel is set to either 1 or 2 (or debug to 1 if only error messages need to be printed).

Try doing a mkdir /tmp/foo && sudo chown root /tmp/foo && chmod a-w /tmp/foo and using tarfile to extract a .tar.gz file over /tmp/foo -- you will see that your Python code threw no exceptions at all. The files would not have been extracted over /tmp/foo which still is an empty directory.

Why this behavior? Who/what benefits from this default behavior? In other words, just who/what would want to ignore, say, permissions errors when decompressing a tarfile?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

a√萤火虫的光℡ 2024-08-23 21:45:16

FWIW,这种令人讨厌的行为将在 Python 2.7 和 3.2 中改变。 http://svn.python.org/view?view=rev&revision= 76780 显然之前忽略错误的原因是为了更像GNU tar,它忽略错误。

FWIW, this nasty behavior is will be changed in Python 2.7 and 3.2. http://svn.python.org/view?view=rev&revision=76780 Apparently the reason for ignoring the errors before was to be more like GNU tar, which ignores errors.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文