Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将字符串传递到子流程模块?_Python_Python 3.x_Command Line_Subprocess - Fatal编程技术网

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

Python 如何将字符串传递到子流程模块?,python,python-3.x,command-line,subprocess,Python,Python 3.x,Command Line,Subprocess,我有一个可执行文件,将提示不同的选项,例如;可执行文件:sample.exe在运行sample.exe时,会提示我输入“帮助”、“显示”、“退出”选项 我需要输入所有这些,并检查输出是否有有效的输出 我正在使用子进程运行sample.exe 我可以使用subprocess.communicate(input='help') 但是除了退出之外,所有选项都不会结束控制台并仍然等待输入 试用代码: p_run = subprocess.Popen(['sample.exe'], shell=True,

我有一个可执行文件,将提示不同的选项,例如;可执行文件:sample.exe在运行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\u run\u out=p\u run.communicate(input=b'help')
中,因为
sample.exe
等待另一个输入。只有通过
quit


我如何传递下一个命令?如何获取上一个命令(“帮助”)的输出?

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

更新代码:

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)

您需要更加清楚地回答问题,包括您尝试过的代码和预期结果。@PacketLoss我刚刚更新了详细信息