[英]Call Python From Bat File And Get Return Code
I'm looking for a way to call a python script from a batch file and getting a return code from the python script.我正在寻找一种从批处理文件中调用 python 脚本并从 python 脚本中获取返回码的方法。 Confusing I know, but it's based on a system that's currently in use.
我知道令人困惑,但它基于当前使用的系统。 I'd re-write it, but this way would be much, much quicker.
我会重新编写它,但这种方式会快得多。
So:所以:
Bat ---------------------> Python
* call python file *
Bat <--------------------------------- Python
* python does a load of work *
* and returns a return code *
The windows shell saves the return code in the ERRORLEVEL
variable: windows shell 将返回码保存在
ERRORLEVEL
变量中:
python somescript.py
echo %ERRORLEVEL%
In the python script you can exit the script and set the return value by calling exit()
:在 python 脚本中,您可以通过调用
exit()
退出脚本并设置返回值:
exit(15)
In older versions of python you might first have to import the exit()
function from the sys
module:在旧版本的 python 中,您可能首先必须从
sys
模块导入exit()
函数:
from sys import exit
exit(15)
You can try this batch script for this:您可以为此尝试此批处理脚本:
@echo off
REM %1 - This is the parameter we pass with the desired return code for the Python script that will be captured by the ErrorLevel env. variable.
REM A value of 0 is the default exit code, meaning it has all gone well. A value greater than 0 implies an error
REM and this value can be captured and used for any error control logic and handling within the script
set ERRORLEVEL=
set RETURN_CODE=%1
echo (Before Python script run) ERRORLEVEL VALUE IS: [ %ERRORLEVEL% ]
echo.
call python -c "import sys; exit_code = %RETURN_CODE%; print('(Inside python script now) Setting up exit code to ' + str(exit_code)); sys.exit(exit_code)"
echo.
echo (After Python script run) ERRORLEVEL VALUE IS: [ %ERRORLEVEL% ]
echo.
And when you run it a couple of times with different return code values you can see the expected behaviour:当您使用不同的返回码值运行它几次时,您可以看到预期的行为:
PS C:\Scripts\ScriptTests> & '\TestPythonReturnCodes.cmd' 5
(Before Python script run) ERRORLEVEL VALUE IS: [ 0 ]
(Inside python script now) Setting up exit code to 5
(After Python script run) ERRORLEVEL VALUE IS: [ 5 ]
PS C:\Scripts\ScriptTests> & '\TestPythonReturnCodes.cmd' 3
(Before Python script run) ERRORLEVEL VALUE IS: [ 0 ]
(Inside python script now) Setting up exit code to 3
(After Python script run) ERRORLEVEL VALUE IS: [ 3 ]
PS C:\Scripts\ScriptTests
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.