我当前面临的问题与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()
上,我不确定为什么。
提前感谢所有帮助!