【问题标题】:How to store output of a python program in command prompt?如何在命令提示符下存储 python 程序的输出?
【发布时间】:2016-09-26 09:23:10
【问题描述】:

我将运行时变量从命令提示符传递到 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 shell cmd runtime parameter-passing


    【解决方案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>
    

    【讨论】:

      【解决方案2】:

      视情况而定。如果您的 Python 代码正在退出一个值(使用 exit(&lt;returncode&gt;)),您可以从 %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
      

      【讨论】:

        【解决方案3】:

        假设它是一个 bash 脚本,你从那里调用 python 函数,它应该像这样完成:

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

        您现在可以使用 pythonReturnOutput。

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

        【讨论】:

        • 这显然不是 bash 脚本; OP 正在使用 Windows 路径并在标签中明确引用 cmd
        • Bash 脚本也适用于 Windows:howtogeek.com/261591/…
        • Windows 10专用,windows 2008 server和windows 2012 server等版本呢?
        猜你喜欢
        • 1970-01-01
        • 2013-06-21
        • 1970-01-01
        • 1970-01-01
        • 2020-06-13
        • 1970-01-01
        • 1970-01-01
        • 2012-08-11
        • 1970-01-01
        相关资源
        最近更新 更多