如何在命令提示符下存储python程序的输出?

时间:2016-09-26 09:23:11

标签: python shell cmd runtime parameter-passing

我将运行时变量从命令提示符传递给python以在那里执行(im = n python)。现在我想存储python程序的结果并将这些结果重新用于命令提示符。样品如下

set input=
set /P input=Enter Layer Name:%=%
C:\Python27\python.exe F:\xampp\htdocs\flood_publish\projection_raster.py %input%

我将用户输入字符串从命令提示符传递给python程序,如上所述。 如何使用python程序的结果返回命令提示符

3 个答案:

答案 0 :(得分:1)

如果有帮助,请告诉我。

python文件代码(c.py):

import sys

print('You passed ',sys.argv[1])

Windows批代码(a.bat):

@echo off

set input=

set /P input=Enter Layer Name:%=%

(python c.py %input%) > tmp.txt

set /P output=<tmp.txt

echo %output%

 批量代码输出:

C:\Users\dinesh_pundkar\Desktop>a.bat
Enter Layer Name:Dinesh
You passed  Dinesh
C:\Users\dinesh_pundkar\Desktop>

答案 1 :(得分:0)

视情况而定。如果您的Python代码正在退出某个值(使用exit(<returncode>)),则可以从%ERRORLEVEL%环境变量中检索它。

<yourpythoncommand>
echo Return code: %ERRORLEVEL%

如果您愿意捕获并处理标准输出,则需要使用FOR循环:

FOR /F "delims=" %%I IN ('<yourpythoncall>') DO CALL :processit %%I
GOTO :EOF

:processit
echo Do something with %1
GOTO :EOF

现在,如果您不想逐行处理输出,最简单的方法是将输出重定向到临时文件。

<yourpythoncommand> >%TEMP%\mytempfile.txt
<do something with %TEMP%\mytempfile.txt>
del %TEMP%\mytempfile.txt

答案 2 :(得分:-1)

假设它是一个调用python函数的bash脚本,它应该像:

function callPython()
{
    local pythonResult=<code for calling python>
    echo $pythonResult
}

local pythonReturnOutput = $(callPython)

现在可以使用pythonReturnOutput。

如果你没有使用bash,shell脚本,这个答案可能不正确。但是,我强烈建议有一个脚本,如果它还没有。