与IOError相关的Python错误号是否稳定?

Ant*_*yko 5 python api error-handling exception errno

我想移动一个文件,但是在找不到的情况下我应该忽略它.在所有其他情况下,应该传播异常.我有以下Python代码:

try:
    shutil.move(old_path, new_path)
except IOError as e:
    if e.errno != 2: raise e
Run Code Online (Sandbox Code Playgroud)

errno == 2是具有"无此文件或目录"描述的那个.我想知道这在Python版本和平台上是否稳定等等.

Sim*_*ser 7

最好使用errno模块中的值而不是硬编码值2:

try:
    shutil.move(old_path, new_path)
except IOError as e:
    if e.errno != errno.ENOENT: raise e
Run Code Online (Sandbox Code Playgroud)

这使得代码在整数错误值发生变化时不太可能中断(尽管不太可能发生).

  • "不太可能"是轻描淡写 - 破坏的程序数量令人难以置信,它将永远不会发生.但总是首选使用符号而不是幻数. (4认同)