在批处理运行时显示或保留Python错误信息
为了简单起见,我有一个批处理文件,它可以运行多个 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.py,使用下面的命令:
python test1.py
那么它会打印出所有的错误信息。
因为我在一个批处理文件里有好几个 Python 文件,所以很难知道到底是哪个文件出错了,而且我根本看不到错误信息,无法知道是什么错误。
我该怎么做才能在遇到错误时停止运行(但不关闭窗口),并显示错误信息呢?
1 个回答
2
我对Python了解不多。不过根据这个问题,它会把信息输出到标准输出和标准错误,这通常是控制台应用程序才会做的事情。
如果python.exe
确实是一个控制台应用程序,而不是Windows的图形界面应用程序,那么其实不需要使用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
关于错误处理,可以参考以下内容:
- Python中的退出代码
- 获取Python程序的退出代码
- 在批处理文件中测试特定错误级别
- 正确测试批处理文件的错误级别优先级
- Windows命令If的文档
请使用Stack Overflow的搜索功能,具体可以参考帮助页面我该如何搜索?,也可以使用其他搜索引擎。你肯定不是第一个遇到这个问题的Python用户,所以这个问题也很可能已经被问过很多次了。
我们希望提问的人能自己先尝试找到解决方案,而不是直接问别人来帮他们解决问题,具体可以查看帮助页面我可以问哪些主题?