我搜索了这个,但大多数答案都是针对更复杂的解决方案而且我是新手。我正在做一个我有C程序的项目。我需要从我正在编写的python脚本中调用它。 C程序将要求输入单个字母(n代表名称,q代表退出)。在我的程序中,我想发送n作为名称。然后发送我的名字。然后退出。 C程序将打印我的名字,然后退出。
我不需要获得输出。只需发送文字。我一直在尝试子进程,并写了这个,但一直卡住:
from subprocess import Popen, PIPE
p = Popen(["./askforname"], stdout=PIPE, stdin=PIPE, stderr=PIPE)
p.communicate(input='n')
答案 0 :(得分:0)
p = Popen(["./askforname"], stdout=PIPE, stdin=PIPE, stderr=PIPE)
time.sleep(1) # sleep long enough for program to have prompted for single letter
p.stdin.write("n\n") #n with a newline
time.sleep(1) # sleep long enough for program to have prompted for name
p.stdin.write("my name\n") # dont forget the newline
time.sleep(1) # sleep long enough the program goes back to asking for single letter
p.stdin.write("q\n") # now send quit
print p.communicate()
可能会有效...但最好使用像pexpect这样的东西,这样你就可以等到预期的提示,直到它们出现而不是特定时间,并希望它们在那里等待