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

How to automate interactive console applications in Python?

我想通过 Python 中的脚本控制 运行 process/program。 我有一个程序“linphonec”(您可以安装:apt-get install linphonec)。 我的任务是:

  1. 运行 linphonec(我现在正在使用子进程)
  2. linphonec 是 运行 时,它有很多命令来控制它,我想使用 proxy listlinphonec 中的命令)。

简单流程:

test@ubuntu$ > linphonec
linphonec > proxy list

我该怎么做?

实际上有两种沟通方式:

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

使用 subprocess.Popen with subprocess.PIPE in constructor via keywrod-args for stdin (propably stdout and stderr, too) and then communicate for a single command or use stdin and stdout (stderr) 作为文件

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()