この質問は、Python 3.4が存在する前に尋ねられましたが、3.4を使用するcontextlib.supress
と、自分の個人的な例外を抑制して使用できます。
この(そのまま実行可能な)コードを確認してください
from contextlib import suppress
class InterruptWithBlock(UserWarning):
"""To be used to interrupt the march of a with"""
condition = True
with suppress(InterruptWithBlock):
print('before condition')
if condition: raise InterruptWithBlock()
print('after condition')
# Will not print 'after condition` if condition is True.
したがって、質問のコードを使用すると、次のようになります。
with suppress(InterruptWithBlock) as _, open(path) as f:
print('before condition')
if <condition>: raise InterruptWithBlock()
print('after condition')
注:3.4より前の場合でも、独自のsuppress
コンテキストマネージャーを簡単に作成できます。