尝试使用try ...来捕获特定的异常

wnn*_*maw 5 python python-2.7

我有一些代码重命名一大堆文件并使用它们将它们移动到一个新目录os.rename().它相当简单,没什么华而不实的.它一直工作,直到我批量重叠,并有重复的文件,这提出了一个WindowsError.由于代码在所有其他方面都有效,我做到了

try:
    os.rename(...)
except WindowsError:
    print "Duplicate file {}".format(fileName)
Run Code Online (Sandbox Code Playgroud)

这很好,除了它意味着所有WindowsErrors都来自重复文件.结果是,当我的脚本的另一个方面破裂时,它基本上默默地​​失败了.

我如何才能try...except只捕获特定的例外情况?如果不可能,有什么变通方法?

mbo*_*007 5

根据文件:

"该errno值将值映射winerror到相应的errno.h值."

因此,您应该能够通过使用来区分不同的Windows错误errno.

例:

try:
    fp = open("nother")
except IOError as e:
    print e.errno
    print e
Run Code Online (Sandbox Code Playgroud)