Я хочу найти элегантный способ сделать следующее:Элегантный способ использования ресурса в Python?
try:
with some_resource:
# got it
do_something()
except ResourceUnavailableError:
# didn't get it
do_something_else()
This:
- пытается получить ресурс
- на успех, он делает что-то, а затем освобождает ресурс правильно
- на провал, он делает что-то другое
Хотя не многие строки кода, я нахожу, что если мне придется писать это во многих разных местах, это не очень элегантно.
Я почти жаль, что я мог бы написать что-то следующим образом (я знаю, что это не код реального Python):
with some_resource:
# got it
do_something()
# an optional else
else:
# didn't get it
do_something_else()
Кто-нибудь знает, если это возможно, чтобы написать что-то вдоль этих линий в Python? Спасибо!
Благодарим за отзыв! Но ... я не уверен, что это работает. Я пробовал его кодировать, и когда не было сделано никаких исключений, все было хорошо. Но если возникло исключение, то после запуска exception_handler() я получил: RuntimeError: генератор не уступил. – moomima
BTW, эта ошибка привела меня к другому, аналогичный пост здесь, который также, казалось, закончился в страданиях: P http://stackoverflow.com/questions/4314338/can-i-use-python-with-statement- for-conditional-execution – moomima
А, крошки. Действительно, я предположил, что вы имели в виду, что исключение будет создано в блоке 'with', а не в создании ресурса. –