shutil.unpack_archive returns bogus ReadError exceptions when input is not found or inaccessible
還沒有人認領這個 Issue。
評估
研究方向
從 shutil.py 第 1311 行附近開始,重現報告中所示的遺失檔案和無法存取路徑的命令。檢查現有的 unpack_archive 行為以及相關測試(如果有);完成的標準是這些輸入會暴露其詳細的檔案系統例外,而不是通用的 ReadError。
由索引模型根據 Issue 內容生成。
描述
Bug report
$ python -c 'import shutil; shutil.unpack_archive("./enoent")'
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib64/python3.11/shutil.py", line 1311, in unpack_archive
raise ReadError("Unknown archive format '{0}'".format(filename))
shutil.ReadError: Unknown archive format './enoent'
$ python -c 'import shutil; shutil.unpack_archive("/root/inaccessible")'
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib64/python3.11/shutil.py", line 1311, in unpack_archive
raise ReadError("Unknown archive format '{0}'".format(filename))
shutil.ReadError: Unknown archive format '/root/inaccessible'
The generic exception makes it handle to handle the error programatically, and the message is also very confusing to the user. Instead, the function should just propagate the detailed exception it got internally. Compare with open:
$ python -c 'open("./enoent")'
Traceback (most recent call last):
File "<string>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: './enoent'
$ python -c 'open("/root/inaccessible")'
Traceback (most recent call last):
File "<string>", line 1, in <module>
PermissionError: [Errno 13] Permission denied: '/root/inaccessible'
Your environment
python3-3.11.0-1.fc37.x86_64
Linked PRs
- gh-155587
- 主要語言
- Python
- 星號
- 77.2k
- 分支
- 36k
- 平均合併
- 1 天 9 小時
- 30 天內合併 PR
- 558
貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
python/cpython 的其他 Issue
-
docs pending
難度 2/5 1-3 小時 新手友好度 78/100
-
stdlib type-feature
難度 2/5 1-3 小時 新手友好度 78/100
-
stdlib type-feature
難度 2/5 1-3 小時 新手友好度 72/100
-
build type-bug
難度 2/5 1-3 小時 新手友好度 76/100
-
stdlib topic-email type-feature
難度 2/5 1-3 小時 新手友好度 70/100
相似的 Issue
-
難度 1/5 1 小時以內 新手友好度 90/100
-
bug
難度 2/5 1-3 小時 新手友好度 86/100
zostera/django-bootstrap4#894 ·
-
難度 2/5 1-3 小時 新手友好度 78/100
use-agent-os/agent-os#3276 ·
-
難度 2/5 1-3 小時 新手友好度 88/100
zephyrproject-rtos/zephyr#119726 ·
-
area/auth bug comp/agent P3 platform/discord type/security
難度 2/5 1-3 小時 新手友好度 88/100
NousResearch/hermes-agent#117848 ·