gpt4 book ai didi

python - 关闭使用 urllib2.urlopen() 正确打开的文件

转载 作者:太空狗 更新时间:2023-10-29 21:12:52 24 4
gpt4 key购买 nike

我在 python 脚本中有以下代码

  try:
# send the query request
sf = urllib2.urlopen(search_query)
search_soup = BeautifulSoup.BeautifulStoneSoup(sf.read())
sf.close()
except Exception, err:
print("Couldn't get programme information.")
print(str(err))
return

我很担心,因为如果我在 sf.read() 上遇到错误,则不会调用 sf.clsoe()。我尝试将 sf.close() 放在 finally block 中,但如果 urlopen() 出现异常,则没有要关闭的文件,我在 finally block 中遇到异常!

然后我尝试了

  try:
with urllib2.urlopen(search_query) as sf:
search_soup = BeautifulSoup.BeautifulStoneSoup(sf.read())
except Exception, err:
print("Couldn't get programme information.")
print(str(err))
return

但这在 with... 行引发了无效语法错误。我怎样才能最好地处理这个问题,我觉得自己很愚蠢!

正如评论者所指出的,我使用的是 Pys60,它是 python 2.5.4

最佳答案

我会使用 contextlib.closing(结合 from __future__ import with_statement 用于旧的 Python 版本):

from contextlib import closing

with closing(urllib2.urlopen('http://blah')) as sf:
search_soup = BeautifulSoup.BeautifulStoneSoup(sf.read())

或者,如果您想避免使用 with 语句:

try:
sf = None
sf = urllib2.urlopen('http://blah')
search_soup = BeautifulSoup.BeautifulStoneSoup(sf.read())
finally:
if sf:
sf.close()

虽然没那么优雅。

关于python - 关闭使用 urllib2.urlopen() 正确打开的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3880750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com