如何将字符串传递到子流程模块?
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)
我有一个可执行文件,它会提示不同的选项,例如;可执行文件: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)