python - Windows 上的 os.rename 引发 WindowsError 而不是 OSError

标签 python exception file-rename

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/

相关文章:

python - 在 NumPy 中使用两个 bool 数组进行索引

ios - pickerViews 崩溃

c++ - 为什么要在方法的定义中使用 throw?

windows - 处理文件名中的特殊字符时批量重命名问题

windows - 重命名文件的脚本

bash - 使用另一个列表中的名称重命名文件列表

python多进程固定

python - xtensor 和 xsimd : improve performance on reduction

c++ - 将 GetLastError() 转换为带有错误字符串的异常

python - 限制 Django Tastypie 中嵌套资源的数量?