如何在 Python 中自动化交互式控制台应用程序?
How to automate interactive console applications in Python?
我想通过 Python 中的脚本控制 运行 process/program。
我有一个程序“linphonec”(您可以安装:apt-get install linphonec)。
我的任务是:
- 运行
linphonec
(我现在正在使用子进程)
- 当
linphonec
是 运行 时,它有很多命令来控制它,我想使用 proxy list
(linphonec
中的命令)。
简单流程:
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()
我想通过 Python 中的脚本控制 运行 process/program。 我有一个程序“linphonec”(您可以安装:apt-get install linphonec)。 我的任务是:
- 运行
linphonec
(我现在正在使用子进程) - 当
linphonec
是 运行 时,它有很多命令来控制它,我想使用proxy list
(linphonec
中的命令)。
简单流程:
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()