私はしばしばPythonで "許可のために許してほしい"と読むので、if
の代わりにtry except
を使う方が良いと考えられることがあります。Pythonの例外処理:唯一の特定のerrnoをキャッチする
私は、多くの場合、これが唯一のエラーであるとして、私は、より具体的かつ唯一errno.EEXIST
を無視したいと思いますしかしおそらく交換が
try:
os.mkdir(dir)
except OSError:
pass.
だろう
if (not os.path.isdir(dir)):
os.mkdir(dir).
のようなステートメントを持っています何が起こるかわからない。
try:
os.mkdir(dir)
except OSError:
if(OSError.errno != errno.EEXIST):
raise
else:
pass.
このトリックを行うようです。しかし、これは本当にかさばり、私のコードを「汚染」し、これらのコードブロックをたくさん必要とすると可読性が低下します。 Python 2.Xでこれを行うためのpythonの方法はありますか?そのようなケースを処理するための標準的な手順は何ですか?
編集:
- 使用レイズ代わりに私が使用@Francisco Couzoによって指摘
- としてOSERRORを上げるのPython 2.7
ただ、 'あなたは、例外のコンテキストを失うことはありませんので、 –
あなただけの' FileExistsError'を捕まえることができOSError'を上げていない、 'raise'の操作を行います。' FileExistsError除きます。http:のpass' – vaultah
DUP // stackoverflowのを。 com/questions/20790580/python-specific-handle-file-exists-exception –