Cにはperrorとerrnoがあり、最後に発生したエラーを出力して保存します。呼び出しが失敗した理由をユーザーに提示するためにfopen()への引数として失敗するすべてのファイルをfstat()する必要がないため、これはファイルioを実行するときに便利です。
PythonでIOError例外を適切に処理するときにerrnoを取得する適切な方法は何ですか?
[1]内:fp = open( "/ notthere") -------------------------- ------------------------------------------------- IOErrorトレースバック(最新の呼び出しが最後) /home/mugen/in() IOError:[Errno 2]そのようなファイルがないか、ディレクトリ: '/notthere' In [2]:fp = open( "test/testfile") --------- -------------------------------------------------- ---------------- IOErrorトレースバック(最新の呼び出しは最後) /home/mugen/in() IOError:[Errno 13]権限が拒否されました: 'test/testfile' In [5]:try: .. 。:fp = open( "nothere") ...:IOErrorを除く: ...:印刷「これは何らかの理由で失敗しました...」 ... : ...: これは何らかの理由で失敗しました...
例外にはerrno
属性があります:
try:
fp = open("nothere")
except IOError as e:
print(e.errno)
print(e)
方法は次のとおりです。一部のユーティリティについては、errno
モジュールおよびos.strerror
関数も参照してください。
import os, errno
try:
f = open('asdfasdf', 'r')
except IOError as ioex:
print 'errno:', ioex.errno
print 'err code:', errno.errorcode[ioex.errno]
print 'err message:', os.strerror(ioex.errno)
IOError属性の詳細については、基本クラスEnvironmentErrorを参照してください。
try:
fp = open("nothere")
except IOError as err:
print err.errno
print err.strerror
同じ「except」句で異なる例外をテストすることもできます。
try:
serial_port.open()
except (AttributeError, SerialException) as e:
print('cannot open serial port: {}'.format(e))