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