期待PopenSpawn在stdout上不显示任何东西

0 人关注

我想尝试使用Pexpect Python库和它的 popen_spawn.PopenSpawn 函数来创建一些跨平台的自动化。

我从非常简单的东西开始,针对Linux运行。

import sys
from pexpect import popen_spawn
child = popen_spawn.PopenSpawn("ls /", logfile=sys.stdout)

这在标准输出上没有显示,这正常吗?

python
python-3.x
linux
pexpect
Natalie Perret
Natalie Perret
发布于 2019-09-13
1 个回答
Natalie Perret
Natalie Perret
发布于 2019-09-14
已采纳
0 人赞同

其实这很容易,应该用 sys.stdout.buffer 而不是 sys.stdout ,就像下面这样。

import sys
import pexpect
from pexpect import popen_spawn
child = popen_spawn.PopenSpawn("ls /", logfile=sys.stdout.buffer)
child.expect(pexpect.EOF)

Which outputs correctly the content of /:

cdrom initrd.img initrd.img.old lib64 lost+found media swapfile timeshift