我正在尝试让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,但它对我没有用,并导致超时。
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