我正在使用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
答案 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