Python文档说that
os.rename(src,dst)
... 在Windows上,如果dst已存在,即使文件是,也会引发OSError ...
然而,对我而言,它引发了WindowsError。文档中有错误吗?
问题的第二部分(更一般,但受上述问题的启发):
UPD 对不起,问题的第二部分不正确。 WindowsError确实被except OSError
所捕获。
答案 0 :(得分:7)
由于OSError是WindowsError的超类,只需捕获 OSError 。
FWIW,核心开发者可以自由地提出一个比文档承诺的最低限度更具体的异常。
此外,以下代码适用于我(在WindowsXP上运行的Python2.7.2):
try:
raise os.rename('nonexisting_file', 'def')
except OSError:
print 'caught'