Windows上os.rename引发WindowsError而非OSError

4 投票
1 回答
3217 浏览
提问于 2025-04-17 10:24

Python的官方文档提到,关于os.rename这个函数

os.rename(src, dst)

... 在Windows系统上,如果目标文件(dst)已经存在,即使它是一个文件,也会引发OSError错误 ...

不过对我来说,它却引发了WindowsError错误。这是不是文档有问题呢?

问题的第二部分(虽然更一般,但受到上面问题的启发):

更新 抱歉,问题的第二部分是错误的。WindowsError确实是被except OSError捕获的,这样是对的。

1 个回答

6

因为OSError是WindowsError的父类,所以只需要捕捉OSError就可以了。

顺便说一下,核心开发者可以抛出比文档中承诺的更具体的异常。

另外,下面的代码在我这里运行得很好(在WindowsXP上使用Python2.7.2):

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

撰写回答