Python 当输出超过2000行时,pexpect child.before为空

Python 当输出超过2000行时,pexpect child.before为空,python,python-3.x,pexpect,Python,Python 3.x,Pexpect,我正在使用Python3.4中的pexpect模块来自动化junos路由器中的一些命令。 我成功地进入路由器并执行命令。但是,我想将命令show configuration | display sets | no more的输出保存在子变量中。before变量,但它是空的子.before。但在这里,输出大约有2000行 我使用的代码是: self.child.sendline('show configuration | display set | no-more') self.child.exp

我正在使用Python3.4中的pexpect模块来自动化junos路由器中的一些命令。 我成功地进入路由器并执行命令。但是,我想将命令
show configuration | display sets | no more
的输出保存在
子变量中。before
变量,但它是空的<如果输出只有几行,则正确填充代码>子.before。但在这里,输出大约有2000行

我使用的代码是:

self.child.sendline('show configuration | display set | no-more')
self.child.expect('>')
output = self.child.before
print(output)
如果命令返回大量行,则输出返回空。 我检查了是否有一个我可以设置的最大读数,但即使这样也帮不了我


有人能告诉我这里可以做什么吗?

pexpect
可以阅读超过2000行:

#!/usr/bin/env python
import sys
import pexpect  # $ pip install pexpect

child = pexpect.spawn(sys.executable, ['-c', """
for i in range(4000): # print lines
    print(str(i) * 200)
print('>')
print('end')
"""])
child.expect(b'>')
print(len(child.before.splitlines()))
# -> 4000

FWIW,我能够通过
pexpect
Child.before
对一个128k行的文件进行cat,没有任何问题。我认为您的问题不在于pexpect。pexpect不做管道-它只等待第一个命令完成-但是您可以使用子shell来完成这项工作。我没有csh,但我认为应该这样做:
self.child.sendline('csh-t“show configuration”| display set | no more“')
。如果这样做了,请告诉我,我会给出答案。@cziemba:在我的例子中,“show configuration | display set | no more”命令的输出大约有2000行。此命令通过pexpect在junos提示符下执行。我可以在日志文件中看到输出,但没有任何输出@tdelaney:“csh-t”不是有效的junos命令。管道是junos命令本身的一部分。所以管道是允许的,它是为junos not pexpect设计的。当配置少于15行时,同样的代码也可以工作。所以我肯定觉得这和pexpect有关