urllib.request.urlopen(data_uri).file are closed automatically when the response is not hold by a variable
未關閉
還沒有人認領這個 Issue。
stdlib
type-bug
- 主要語言
- Python
- 星號
- 77.2k
- 分支
- 36k
- PR 合併指標
- PR 指標待擷取
描述
Bug report
Opening a data uri with urllib.request.urlopen and read it directly will result in I/O operation on closed file..
Errored example:
from urllib.request import urlopen
url = 'data:text/plain,hello world'
print(urlopen(url).file.read())
"""
Output:
Traceback (most recent call last):
File "/home/maple3142/tmp/xa.py", line 4, in <module>
print(urlopen(url).file.read())
ValueError: I/O operation on closed file.
"""
Normal example:
from urllib.request import urlopen
url = 'data:text/plain,hello world'
resp = urlopen(url)
print(resp.file.read())
"""
Output:
b'hello world'
"""
Your environment
- CPython versions tested on: 3.8.11, 3.10.4
- Operating system and architecture: Arch Linux on WSL2 on Windows 10 x64
貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
研究方向
先重現 urllib.request.urlopen 的兩個範例,然後檢查該進入點背後的 data-URI 處理。完成標準是直接鏈式呼叫 .file.read() 能夠正常運作且不會出現檔案已關閉錯誤,同時現有的儲存回應範例仍然正確,並為此行為加入回歸測試。
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- python
- 領域
- networking
- Issue 類型
- 缺陷
- 難度
- 3/5
- 預估耗時
- 1-2 天
- 活躍度
- 停滯
- 描述清晰度
- 描述清楚
- 新手友好度
- 42/100