Pexpect脚本给出“无”输出

在服务器上运行时,以下脚本会显示None

#!/usr/bin/env python
import pexpect
import sys
dcommand = ('ls')
child = pexpect.spawn(dcommand)
output = child.before
print output 

不知道为什么-这是我手动运行ls时发生的比较-肯定有东西!

[root@dub-svrfarm27 ~]# python script.py
None
[root@dub-svrfarm27 ~]# ls
anaconda-ks.cfg  auto_ovirt_st_setup.py  install_time  kickstart-post.log  original-ks.cfg  script.py 

有什么想法吗?我确定它有些愚蠢,但是...

hao0303hao 回答:Pexpect脚本给出“无”输出

您需要期望prompt,然后为类似的每个操作从缓冲区读取数据,

(pilenv) bash-5.0$ cat ll.py 
import pexpect
import sys
dcommand = 'ls'
child = pexpect.spawn(dcommand)
child.expect(r'.*$') # my prompt ends with $,if yours ends with something else,then use that
print(child.readline()) 

(pilenv) bash-5.0$ python ll.py 
b'agust.py\t     IMG-20191213-WA0000.jpg  lib    l.py\r\n'
(pilenv) bash-5.0$ 

也请参考code,以了解我使用pexpect进行个人操作的理智方式:)

本文链接:https://www.f2er.com/2825282.html

大家都在问