Python - особенно обработать файл существует исключение
Я встречал примеры на этом форуме, где конкретная ошибка вокруг файлов и каталогов обрабатывается путем тестирования значения errno
в OSError
(или IOError
в эти дни?). Например, некоторые обсуждения здесь - Python "open()" выдает разные ошибки для "файла не найден" . - как обрабатывать оба исключения?. Но, я думаю, это неправильный путь. В конце концов, a FileExistsError
существует специально, чтобы не беспокоиться о errno
.
Следующая попытка не сработала, так как я получил ошибку для токена FileExistsError
.
try:
os.mkdir(folderPath)
except FileExistsError:
print 'Directory not created.'
Как вы проверяете эту и подобные другие ошибки?
Ответы
Ответ 1
В соответствии с кодом 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
Ответ 2
Вот пример обращения с состоянием гонки:
# 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)