期望-从不断输出的shell中读取

问题描述 投票:0回答:1

我正在尝试让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('\003')
child.expect('$')

这是有问题的数据:

image showing the data constantly printing to the terminal

我尝试了此处描述的解决方案:Parsing pexpect output,但它对我没有用,并导致超时。

python-3.x pexpect
1个回答
0
投票
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
© www.soinside.com 2019 - 2024. All rights reserved.