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

时间:2012-01-17 05:15:41

标签: python exception file-rename

Python文档说that

  

os.rename(src,dst)

     

... 在Windows上,如果dst已存在,即使文件是,也会引发OSError ...

然而,对我而言,它引发了WindowsError。文档中有错误吗?

问题的第二部分(更一般,但受上述问题的启发):

UPD 对不起,问题的第二部分不正确。 WindowsError确实被except OSError所捕获。

1 个答案:

答案 0 :(得分:7)

由于OSError是WindowsError的超类,只需捕获 OSError

FWIW,核心开发者可以自由地提出一个比文档承诺的最低限度更具体的异常。

此外,以下代码适用于我(在WindowsXP上运行的Python2.7.2):

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