我正在使用Popen运行可执行文件,一旦可执行文件正在运行并且cmd打开,我就会依次管道两个关键笔划(数字)。当cmd提示用户如此屏幕截图所示:
如何使用子进程模块将这些击键(数字)传递给我的进程?我的代码如下,我是否需要使用process.communicate()?
process.communicate(input = '1\n2')
非常感谢!,
编辑:
我习惯了代码 - {{1}}按顺序输入1和2,不需要转换为字节,因为我使用的是Python 2.7,这种转换是隐含的
答案 0 :(得分:2)
http://jsfiddle.net/wagor93h/3/表示要使用input=b'<chars>'
。输入必须是字节,因为输入通过管道,管道携带二进制数据。确切地说,您发送的内容取决于程序的要求。要选择第一个替代方案,使用input()
的python程序需要b'1\n'
,而使用不同输入函数的程序可能只需要b'1'
。要发送两个选项,请将两个必需的字节对象连接成一个。准备好实验。我相信process.communicate()只能被调用一次,所以你必须发送一个预定的输入流,并在子进程结束后得到两个输出流。
如果此答案适用于您的系统(Windows,则会显示),请告诉我。