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)
Другие вопросы по тегам