如何处理在30分钟内显示的巨大输出,然后期待与pexpect

时间:2018-01-04 23:00:38

标签: python python-2.7 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分钟时,有什么方法可以指示某些提示?

1 个答案:

答案 0 :(得分:1)

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