web-dev-qa-db-ja.com

「try .. except IOError」がキャッチしない場合のFileNotFoundErrorの処理方法

python 3?でエラーをキャッチするにはどうすればよいですか?多くのことをグーグルで検索しましたが、どの答えも機能していないようです。 errno。

これは私が今試したものです:

これは私の定義した関数です

try:
    with open(file, 'r') as file:
        file = file.read()
        return file.encode('UTF-8')
except OSError as e:
    print(e.errno)

ただし、このエラーが発生しても何も印刷されません

FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'
18
Thomas W

FileNotFoundErrorOSErrorのサブクラスで、それまたは例外自体をキャッチします。

except OSError as e:

オペレーティングシステムの例外はPython 3.3; IOErrorOSErrorに統合されました。 PEP 3151:OSの修正とIO例外階層セクション 新機能のドキュメント。

詳細については、 OS Exceptionsセクション を参照してください。詳細については、クラス階層を下にスクロールしてください。

ただし、IOErrorOSErrorのエイリアスであるため、コードはそのまま動作します

>>> IOError
<class 'OSError'>

例外ハンドラを正しい場所に配置していることを確認してください。例外のトレースバックをよく見て、実際に発生している場所を見逃していないことを確認してください。最後になりましたが、Pythonスクリプト、再起動しましたか?

28
Martijn Pieters