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

How to store output of a python program in command prompt?

我正在将 运行 时间变量从命令提示符传递到 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 程序的结果用回命令提示符

假设它是您调用 python 函数的 bash 脚本,它应该像这样完成:

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

local pythonReturnOutput = $(callPython)

您现在可以使用 pythonReturnOutput。

如果您没有使用 bash、shell 脚本,此答案可能不正确。但是,我强烈建议您准备好脚本,如果还没有的话。

如果有帮助请告诉我。

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>

视情况而定。如果您的 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