我应该在 urllib.urlopen() 之后调用 close() 吗? [英] should I call close() after urllib.urlopen()?
问题描述
我是 Python 新手,正在阅读别人的代码:
I'm new to Python and reading someone else's code:
是否应该在urllib.urlopen()
后接urllib.close()
?否则,会泄漏连接,对吗?
should urllib.urlopen()
be followed by urllib.close()
? Otherwise, one would leak connections, correct?
推荐答案
必须在 urllib.urlopen
result 上调用 close
方法>, not 在您所考虑的 urllib
模块本身上(正如您提到的 urllib.close
- 它不存在).
The close
method must be called on the result of urllib.urlopen
, not on the urllib
module itself as you're thinking about (as you mention urllib.close
-- which doesn't exist).
最好的方法:代替 x = urllib.urlopen(u)
等,使用:
The best approach: instead of x = urllib.urlopen(u)
etc, use:
import contextlib
with contextlib.closing(urllib.urlopen(u)) as x:
...use x at will here...
with
语句和 closure
上下文管理器将确保即使出现异常也能正确关闭.
The with
statement, and the closing
context manager, will ensure proper closure even in presence of exceptions.
这篇关于我应该在 urllib.urlopen() 之后调用 close() 吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!