Python 文档说 that
os.rename(src, dst)
... On Windows, if dst already exists, OSError will be raised even if it is a file ...
但是,对我来说,它引发了 WindowsError。文档有错误吗?
问题的第二部分(更笼统,但受到上述问题的启发):
UPD 抱歉,问题的第二部分不正确。 WindowsError 确实被 except OSError
捕获了。
最佳答案
因为 OSError 是 WindowsError 的父类(super class),所以只需捕获 OSError。
FWIW,核心开发人员可以自由提出比文档 promise 的最低限度更具体的异常。
此外,以下代码对我来说工作正常(Python2.7.2 运行在 WindowsXP 上):
try:
raise os.rename('nonexisting_file', 'def')
except OSError:
print 'caught'
关于python - Windows 上的 os.rename 引发 WindowsError 而不是 OSError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8890010/