gpt4 book ai didi

Python - 除了 (OSError, e) - 不再适用于 3.3.3?

转载 作者:太空狗 更新时间:2023-10-29 21:12:42 25 4
gpt4 key购买 nike

以下内容在整个 Python 3.X 中都有效,并且在 3.3.3 中没有被破坏,无法在文档中找到更改的内容。

import os

def pid_alive(pid):
pid = int(pid)
if pid < 0:
return False
try:
os.kill(pid, 0)
except (OSError, e):
return e.errno == errno.EPERM
else:
return True

尝试了 except 行的不同变体,例如 except OSError as e: 但随后 errno.EPERM 中断等。

有任何快速指示吗?

最佳答案

表达式 except (OSError, e) never 在 Python 中工作,而不是以你认为的方式工作。该表达式捕获两种类型的异常; OSError 或全局 e 所指的任何内容。当没有全局名称 e 时,您的代码会中断。

Python 3 和 Python 2.6 及更新版本的正确表达式是:

except OSError as e:

Python 2 也支持语法:

except OSError, e:

没有括号,或者:

except (OSError, ValueError), e:

捕捉不止一种类型。正如您自己在这里发现的那样,语法非常困惑。

更改是在 Python 2.6 及更高版本中添加的,请参阅 PEP 3110 - Catching Exceptions in Python 3000Exception-handling changes section 2.6 新增功能文档的一部分。

至于errno.EPERM的异常;你没有导入 errno,所以这也是一个 NameError

关于Python - 除了 (OSError, e) - 不再适用于 3.3.3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20517785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com