使用子进程模块将键击输入到cmd中

时间:2017-03-25 19:20:31

标签: python subprocess

我正在使用Popen运行可执行文件,一旦可执行文件正在运行并且cmd打开,我就会依次管道两个关键笔划(数字)。当cmd提示用户如此屏幕截图所示:

enter image description here

如何使用子进程模块将这些击键(数字)传递给我的进程?我的代码如下,我是否需要使用process.communicate()?

process.communicate(input = '1\n2')

非常感谢!,

编辑:

我习惯了代码 - {{1}}按顺序输入1和2,不需要转换为字节,因为我使用的是Python 2.7,这种转换是隐含的

1 个答案:

答案 0 :(得分:2)

http://jsfiddle.net/wagor93h/3/表示要使用input=b'<chars>'。输入必须是字节,因为输入通过管道,管道携带二进制数据。确切地说,您发送的内容取决于程序的要求。要选择第一个替代方案,使用input()的python程序需要b'1\n',而使用不同输入函数的程序可能只需要b'1'。要发送两个选项,请将两个必需的字节对象连接成一个。准备好实验。我相信process.communicate()只能被调用一次,所以你必须发送一个预定的输入流,并在子进程结束后得到两个输出流。

如果此答案适用于您的系统(Windows,则会显示),请告诉我。