os.rename на windows вызывает WindowsError вместо OSError - PullRequest
4 голосов
/ 17 января 2012

Документация Python говорит , что

os.rename (src, dst)

... В Windows, если dst уже существует,OSError будет вызываться, даже если это файл ...

Однако для меня это вызывает WindowsError.Есть ли ошибка в документации?

Вторая часть вопроса (более общая, но вдохновленная сформулированной выше проблемой):

UPD Извините,вторая часть вопроса была неверной.WindowsError действительно отлавливается except OSError, как и должно быть.

1 Ответ

7 голосов
/ 17 января 2012

Поскольку OSError является суперклассом WindowsError, просто перехватите OSError .

FWIW, разработчики ядра могут выдавать исключение, более конкретное, чем минимум, обещанный документами.

Кроме того, следующий код прекрасно работает для меня (Python2.7.2 работает на WindowsXP):

try:
    raise os.rename('nonexisting_file', 'def')
except OSError:
    print 'caught'
...