如何在Python中自动化交互式控制台应用程序?

时间:2016-09-17 09:09:48

标签: python linux shell subprocess linphone

我想通过Python中的脚本来控制正在运行的进程/程序。 我有一个程序`linphonec'(你可以安装:apt-get install linphonec)。 我的任务是:

  1. 运行linphonec(我目前正在使用子流程)
  2. linphonec正在运行时,它有许多命令来控制它,我想使用proxy listlinphonec中的命令)。
  3. 简单流程:

    test@ubuntu$ > linphonec
    linphonec > proxy list
    

    我该怎么做?

1 个答案:

答案 0 :(得分:0)

实际上有两种沟通方式:

使用myprogram.py | linphonec运行您的程序,将print的所有内容传递给linphonec

在构造函数中使用subprocess.Popen通过keywrod-args为stdin(也可以是stdout和stderr)使用subprocess.PIPE然后communicate用于单个命令或使用stdinstdoutstderr)作为文件

import subprocess
p=subprocess.Popen("linphonec",
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
    universal_newlines=True) #this is for text communication
p.stdin.write("proxy list\n")
result_first_line=p.stdout.readline()