1. ホーム
  2. python

[解決済み] Pythonのwith文の使用中に例外をキャッチする

2022-03-16 15:39:47

質問内容

残念なことに、Pythonの'with'ステートメントの例外を処理する方法がわかりません。もし私がコードを持っているならば。

with open("a.txt") as f:
    print f.readlines()

私は本当に何かをするために 'file not found exception' を処理したいのです。しかし、私は以下を書くことができません。

with open("a.txt") as f:
    print f.readlines()
except:
    print 'oops'

と書けません。

with open("a.txt") as f:
    print f.readlines()
else:
    print 'oops'

try/except 文で 'with' を囲むとうまくいきません: 例外が発生しません。with文の中で失敗をPythonicに処理するにはどうしたらいいでしょうか?

解決方法は?

from __future__ import with_statement

try:
    with open( "a.txt" ) as f :
        print f.readlines()
except EnvironmentError: # parent of IOError, OSError *and* WindowsError where available
    print 'oops'

もし、オープンコールとワーキングコードでエラーのハンドリングを変えたい場合は、このようにすることができます。

try:
    f = open('foo.txt')
except IOError:
    print('error')
else:
    with f:
        print f.readlines()