用Python脚本封装交互式命令行应用程序

21 投票
2 回答
8341 浏览
提问于 2025-04-15 15:04

我想从Python中控制一个互动的命令行应用程序。

我想最基本的需求是写一个Python脚本,能够在主机操作系统上启动这个命令行应用。然后把标准输入的内容传给这个命令行应用,再把这个命令行应用的输出结果传回标准输出。

在这个基础上,对输入和输出进行一些处理应该就很简单了。

说实话,我可能只需要知道这个技术叫什么。我不知道该搜索什么内容。

2 个回答

17

也许你想了解一下 Subprocess 这个模块(MOTW 也有相关内容)。

我通常用下面的代码来调用系统的命令行:

from subprocess import Popen, PIPE

## shell out, prompt
def shell(args, input_=''):
    ''' uses subprocess pipes to call out to the shell.
    
    args:  args to the command
    input:  stdin
    
    returns stdout, stderr
    '''
    p = Popen(args, stdin=PIPE, stdout=PIPE, stderr=PIPE)
    stdout, stderr = p.communicate(input=input_)
    return stdout, stderr
11

你觉得PExpect这个工具适合你吗?

撰写回答