如何使用 pexpect 处理 30 分钟内显示的巨大输出

How to handle huge output displayed within 30 minutes before expecting prompt with pexpect

我正在尝试用 pexpect 编写一个脚本,我需要在 30 分钟内获取大量输出,然后才能得到提示。

child.sendline('abc')
child.expect('.*:abc.*')

child.sendline('test')
# child.timeout=1500
# There will be huge output displayed for 30 minutes here
child.expect('.*:abc.*', timeout=1500)
status = child.after
print status

尝试保留 child.timeout,但无济于事。 尝试使用 child.expect 传递超时,但没有帮助。

当输出很大并且到达提示所需的时间大约为 30 分钟时,有什么方法可以让我期待一些提示吗?

EOF 异常意味着您的子进程在您的命令超时之前退出。要处理这种情况,您可以提供期望列表并分别处理每个期望的逻辑

result = child.expect(['.*:abc.*', pexpect.TIMEOUT, pexpect.EOF], timeout=1500)
if result == 1:
    # code to handle case where the expected string .*:abc.* was caught
if result == 2:
    # code to handle timeout exception
if result == 3:
    # code to handle EOF exception