为了简化,我有一个运行多个python程序的批处理文件:
start "01" /wait "C:\python27\python.exe" test1.py
start "02" /wait "C:\python27\python.exe" test2.py
但我发现即使test1.py由于其错误而未运行,它只是继续运行test2.py。
它只是在遇到错误时立即关闭test1.py的窗口,然后只为test2.py创建另一个窗口
当然,如果我通过运行
单独运行test1.pypython test1.py
然后它会打印所有错误消息。
由于我在一个批处理中有几十个python文件,因此很难知道哪一个导致错误,我甚至不知道那个错误是什么,因为我看不到错误消息。
当遇到某些错误时,如何让它停止(但不关闭窗口)并显示错误消息?
答案 0 :(得分:2)
我对 Python 了解不多。但根据问题,它将消息输出到stdout和stderr,只有控制台应用程序才能这样做。
但是如果python.exe
确实是一个控制台应用程序而不是Windows(GUI)应用程序,那么就没有必要使用start "title" /wait
,因为这只会导致调用控制台应用程序python.exe
一个单独的命令行解释器进程,这就是在命令行解释器进程中没有输出python.exe
的原因,在该进程中执行批处理文件。
我建议您尝试一下:
@echo off
echo Calling Python with script test1.py.
"C:\python27\python.exe" test1.py
if errorlevel 1 pause
echo Calling Python with script test2.py.
"C:\python27\python.exe" test2.py
if errorlevel 1 pause
有关错误处理的信息,请参阅:
请使用帮助页面How do I search?上解释的Stack Overflow搜索功能以及WWW搜索引擎。你肯定不会做其他Python用户尚未做过的事情,因此也很可能经常被问到。
我们希望提问者试图自己找到解决方案而不是要求其他人完成工作,请参阅帮助页面What topics can I ask about here?