このフォーラムで、errno
のOSError
値(またはIOError
これらの日?)の値をテストすることで特定のエラーが処理される例を見つけました。たとえば、ここのいくつかの議論- Pythonの「open()」は「ファイルが見つかりません」に対して異なるエラーをスローします-両方の例外を処理する方法? 。しかし、それは正しい方法ではないと思います。結局のところ、FileExistsError
は、errno
について心配する必要がないようにするために特別に存在しています。
トークンFileExistsError
のエラーが発生したため、次の試行は機能しませんでした。
try:
os.mkdir(folderPath)
except FileExistsError:
print 'Directory not created.'
このエラーや他の同様のエラーを具体的にどのように確認しますか?
コードによるとprint ...
、Python 2.xを使用しているようです。 FileExistsError
がPythonに追加されました3.3; FileExistsError
は使用できません。
使用する - errno.EEXIST
:
import os
import errno
try:
os.mkdir(folderPath)
except OSError as e:
if e.errno == errno.EEXIST:
print('Directory not created.')
else:
raise
これは、既存のシンボリックリンクを で原子的に上書きしようとするときに競合状態を処理する例です :
# os.symlink requires that the target does NOT exist.
# Avoid race condition of file creation between mktemp and symlink:
while True:
temp_pathname = tempfile.mktemp()
try:
os.symlink(target, temp_pathname)
break # Success, exit loop
except FileExistsError:
time.sleep(0.001) # Prevent high load in pathological conditions
except:
raise
os.replace(temp_pathname, link_name)