【问题标题】:Showing or leaving python error messages when running them by batch批量运行时显示或留下python错误消息
【发布时间】:2014-09-01 22:40:23
【问题描述】:

为了简化,我有一个批处理文件,它可以运行多个 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文件,很难知道是哪一个导致了错误,我什至不知道是什么错误,因为我看不到错误消息。

当它遇到一些错误时,我怎样才能让它停止(但不关闭窗口),并向我显示错误消息?

【问题讨论】:

标签: python batch-file batch-processing


【解决方案1】:

我对 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?

【讨论】:

  • 谢谢你,莫菲。运行 test1.py,出现“按任意键继续”消息,我按任意键,运行 test2.py,出现按任意键继续消息,程序结束。感觉这正在朝着正确的方向前进。但即使程序没有任何错误,它也会要求“按任意键继续”。我希望它继续下去。我只想在顺序运行多个 python 程序时查看消息。
  • 好吧,我只建议了一个小代码来验证Python.exe 是否确实是一个控制台应用程序,因此根本不需要命令start。我更新了代码以仅在 Python 以大于或等于 1 的返回值终止时暂停执行。
猜你喜欢
  • 1970-01-01
  • 2012-06-21
  • 2018-05-28
  • 2021-07-20
  • 1970-01-01
  • 2021-04-17
  • 1970-01-01
  • 1970-01-01
  • 2022-06-28
相关资源
最近更新 更多