Discuss / Python / 廖老师,为什么Popen.communicate的timeout超时捕获不了TimeoutExpired,但是可以捕获TimeoutError

廖老师,为什么Popen.communicate的timeout超时捕获不了TimeoutExpired,但是可以捕获TimeoutError

Topic source

Kirto先森

#1 Created at ... [Delete] [Delete and Lock User]

具体情况如下: ''' try: output,err = p.communicate(b'set q = mx\n python.org \n exit \n',timeout=1) except TimeoutExpired:
p.kill() output,err = p.communicate(b'set q = mx\n python.org \n exit \n') ''' 显示NameError: name 'TimeoutExpired' is not defined

而我用except TimeoutError可以捕获到异常并执行之后的代码,当然Exception也可以

Kirto先森

#2 Created at ... [Delete] [Delete and Lock User]

我查了stackoverflow看到说TimeoutExpired is not globally defined; use subprocess.TimeoutExpired instead.


  • 1

Reply