我是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)