Pexpect - 从不断输出中读取 shell

Pexpect - Read from constantly outputting shell

我正在尝试让 pexpect 开始 运行 一个命令,该命令基本上每隔几毫秒连续输出一些信息,直到用 Ctrl + C 取消。

我已经尝试让 pexpect 记录到一个文件,尽管这些输出被简单地忽略并且永远不会被记录。

child = pexpect.spawn(command)
child.logfile = open('mylogfile.txt', 'w')

这导致命令被记录为空输出。

我也曾尝试让进程 运行 持续几秒钟,然后发送中断以查看是否记录了数据,但这又一次导致日志几乎为空。

child = pexpect.spawn(command)
child.logfile = open('mylogfile.txt', 'w')
time.sleep(5)
child.send('[=12=]3')
child.expect('$')

这是有问题的数据:

image showing the data constantly printing to the terminal

我已经尝试过此处描述的解决方案:Parsing pexpect output 虽然它对我不起作用并且会导致超时。

通过为此使用 Python 子流程设法让它工作,不确定使用 Pexpect 的方法,但这符合我的描述。

def echo(self, n_lines):
    output = []
    if self.running is False:
        # start shell
        self.current_shell = Popen(cmd, stdout=PIPE, shell=True)
        self.running = True

        i = 0
        # Read the lines from stdout, break after reading the desired amount of lines.
        for line in iter(self.current_shell.stdout.readline, ''):
            output.append(line[0:].decode('utf-8').strip())
            if i == n_lines:
                break
            i += 1
    return output