У меня следующий код в скрипте 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
, но если есть исключение для urlopen()
, то нет файла для закрытия, и я обнаружил исключение в блоке finally
!
Итак, я попробовал
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