закрытие файлов, правильно открытых с помощью urllib2.urlopen ()

У меня есть следующий код в скрипте 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

, но это вызвало недопустимую синтаксическую ошибку в с ... линия. Как мне лучше с этим справиться, я чувствую себя глупо!

Как отмечали комментаторы, я использую Pys60, который является python 2.5.4

7
задан fearoffours 7 October 2010 в 11:02
поделиться