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
我正在尝试让 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