Python 2.7 中的子进程 - 向引擎发出命令



我是Python的新手,我得到了一个bash引擎(它从命令行提示符或文件中获取自己独特的命令并执行特定的功能)。我想通过Python对其进行子处理。

我能够用subprocess.call(path, shell=True)打开引擎,并手动与之交互/输入命令,但我无法弄清楚如何编写通过 Python 输入到引擎中的唯一命令脚本,以自动查看输出。我试图理解所有文档,但它是如此,如此冗长。

理想情况下,我想在 Python 中编写所有输入命令的脚本,对引擎进行子处理,并在 Python 输出中查看引擎的输出。

再次,如果这听起来令人困惑,请原谅我。例如,我尝试过:

p = subprocess.Popen(path-to-engine, stdin = subprocess.PIPE, stdout = subprocess.PIPE, shell=True)
p.stdin.write("some commands")
p.stdout.readline()
p.kill()

但这只给了我退出代码 0,没有输出。

你应该

使用.communicate()而不是.kill()

import subprocess
p = subprocess.Popen(
    path_to_engine,
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
    shell=True)
p.stdin.write("some commandsn")
stdout, stderr = p.communicate()
print('stdout:')
print(stdout)
print('stderr:')
print(stderr)

相关内容

  • 没有找到相关文章

最新更新