如何使用python子进程库对程序进行多次读写

时间:2019-06-05 03:23:10

标签: python python-2.7 subprocess

我当前面临的问题与python的子进程库有关。我有一个二进制程序,执行该程序时会要求输入名称,然后需要给它起一个名称。在给它起一个名字之后,我需要写一些有趣的东西(只是一个例子与我写的内容无关紧要)。我还需要它具有可重复性,例如程序是否要再请求5次其他名称(仅作为示例)。程序的流程有点像这样。

user@linux# ./exec 
Enter access name: pythonUser!

access granted. Write some notes.

>My favorite snack is a Foo Bar!
>Taking notes is my favorite part of the day!

Good notes! Closing now.

基本上,我需要能够读取程序的输出,如果输出中包含字符串,则需要将某些输出写入程序。

我查看了其他SO帖子并阅读了子流程库,这需要花很多时间,而且我很难理解所有内容。

所以我当前的python代码如下:

import subprocess

p=subprocess.Popen(['./exec'], stdout=subprocess.PIPE, stdin=subprocess.PIPE, shell=True)

execOutput = p.stdout.readline()
if ("Enter access name:" in execOutput):  
    p.communicate(input="pythonUser")

目前,它只是挂在execOutput = p.stdout.readline()上,我不确定为什么。

提前感谢所有帮助!

0 个答案:

没有答案