Python - специально обработать файл существует исключение
Я сталкивался с примерами на этом форуме, где определенная ошибка вокруг файлов и каталогов обрабатывается путем тестирования errno
значение в OSError
(или же IOError
Эти дни?). Например, некоторые обсуждения здесь - Python "open()" выдает различные ошибки для "файл не найден" - как обрабатывать оба исключения?, Но я думаю, что это не правильный путь. В конце концов, 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
Вот пример работы с условием гонки при попытке атомарной перезаписи существующей символической ссылки:
# 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)