在本地计算机上观察终端

时间:2016-08-29 06:02:34

标签: python output pexpect

我正在使用pexpect为 Mac (非远程SSH)上的本地终端开发代码用户交互,而不是使用子进程。但是我不知道在接下来的情况下接收空输出我做错了什么:

1)

child = pexpect.spawn('ls')
child.expect(pexpect.EOF)
output = child.before
print output

输出为空

2)

child = pexpect.spawn('ls -l')
child.expect(pexpect.EOF)
output = child.before
print output

效果很好。输出是文件和文件夹的列表,就像我们在本地终端输入ls -l <​​/ p>一样

3)

child = pexpect.spawn('pwd')
child.expect(pexpect.EOF)
output = child.before
print output

输出为空

输出必须存在,而不是空的3种情况对吗?你知道为什么'ls'和'pwd'是空的,但是'ls -l'不是吗?我该怎么做来修复'空'输出?

祝你好运, Quyen Tran

1 个答案:

答案 0 :(得分:1)

对于运行不需要交互的命令,spawn不是正确的方法。最好使用pexpect.run方法并将输出作为返回值。

pexpect.spawn更适合于生成子进程,您需要发送命令并期望响应。您的代码在我的终端上运行正常,但如果您无法在您的终端上完成,请使用run方法

child = pexpect.spawn('ls')
child.expect(pexpect.EOF)
0
print child.before
codes program.c << output of ls command