对不起,如果这是一个简单的问题,并已答复之前,但我无法找到任何地方。Popen子过程异常
我试图听UDP数据包,如果他们是某些数据包,运行不同的批处理脚本。我有这个工作正常,但我发现,如果Popen命令没有找到该文件,它会触发一个异常,脚本停止运行。理想情况下,我希望打印一条消息,然后继续监听其他数据包并对其执行操作,只是给我们一个调试消息。这是我用过的代码,我怎么能这样做?
if rxdata == "Camera 1":
from subprocess import Popen
try:
p = Popen("Camera 1.bat", cwd=r"C:\xxx")
stdout, stderr = p.communicate()
except FileNotFoundError():
print('Camera 1.bat not found')
elif rxdata == "Camera 2":
from subprocess import Popen
p = Popen("Camera 2.bat", cwd=r"C:\xxx")
stdout, stderr = p.communicate()
在这两个示例中,我收到以下内容并关闭脚本。
Traceback (most recent call last):
File "C:\UDP Listener.py", line 42, in <module>
p = Popen("Camera 1.bat", cwd=r"C:\xxx")
File "C:\Python34\lib\subprocess.py", line 858, in __init__
restore_signals, start_new_session)
File "C:\Python34\lib\subprocess.py", line 1111, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified
在此先感谢
马特
只需将调用放在'try' /'except'块中。请参阅[这里](https://docs.python.org/3.4/tutorial/errors.html#handling-exceptions)。 – dano
摄像机1有一个尝试/除外块,但我收到相同的消息。难道我做错了什么? – matth9
'除了FileNotFoundError():'是错误的。你不应该在这里给出一个(新创建的)异常实例,而是给出异常类本身。 – glglgl