如何将字符串传递到子流程模块?

How do I pass a string into subprocess module?

我有一个可执行文件,它会提示不同的选项,例如;可执行文件:sample.exe 在 运行ning sample.exe,我收到输入“帮助”、“显示”、“退出”选项的提示。

我需要输入所有这些并检查输出是否有有效输出。

我正在使用子进程 运行 sample.exe

我可以使用 subprocess.communicate(input='help')

传递输入

但除了退出所有选项外,不会结束控制台并仍在等待输入。

尝试过的代码:

p_run = subprocess.Popen(['sample.exe'], shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
p_run_out = p_run.communicate(input=b'help')
print(p_run_out)

这里它卡在 p_run_out = p_run.communicate(input=b'help') 中,因为 sample.exe 等待另一个输入。它仅在我们通过 quit

时结束

如何传递下一个命令?如何获取上一条命令的输出('help') ?

您可以传递多个命令并只读取第一个命令的输出。

更新代码:

p_run = subprocess.Popen(['sample.exe'], shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
p_run_out = p_run.communicate(input=b'help\nquit')[0]
print(p_run_out)