【问题标题】:Executing command line command from Python从 Python 执行命令行命令
【发布时间】:2017-07-04 16:00:48
【问题描述】:

我知道人们已经解决了类似的问题,但我仍然感到困惑。

我想使用 Python 在 Windows 命令行中执行命令“Inventory.bat rap.t00z.awp236pgrbf00.grib2 rap.t00z.awp236pgrbf00 LoLa 25 48 33 -122 -83”。

我当前的 Python 脚本是:

import subprocess
subprocess.check_output(['Inventory.bat', 'rap.t00z.awp236pgrbf00.grib2 rap.t00z.awp236pgrbf00', 'LoLa', '25', '48', '33', '-122', '-83'])

这在 Python 执行时不起作用。我错过了什么?

感谢您的帮助!

【问题讨论】:

    标签: windows command-line subprocess


    【解决方案1】:

    在 Windows 下,.bat 文件由cmd shell 执行。要使用 shell,您必须在 subprocess 函数中包含 shell=True 选项。

    subprocess.check_output(['Inventory.bat', 'rap.t00z.awp236pgrbf00.grib2 rap.t00z.awp236pgrbf00', 'LoLa', '25', '48', '33', '-122', '-83'], shell=True)
    

    【讨论】:

    • @Waterguy 不确定,subprocess 应该等到命令完成后再返回。可能 cmd shell 本身正在启动某些东西而不等待它,您可以通过在批处理文件末尾放置 echo 来检查。如果是这样,您需要在 SuperUser 或其他地方询问。