Pexpect PopenSpawn 在标准输出上不显示任何内容

Pexpect PopenSpawn does not show anything on stdout

我想尝试使用 Pexpect Python 库及其 popen_spawn.PopenSpawn 功能来创建一些跨平台自动化。

我从一些非常简单的东西开始 运行 它反对 Linux:

import sys
from pexpect import popen_spawn

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

这在标准输出上没有任何显示,是否正常?

实际上这很简单,应该使用 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)

正确输出/的内容:

bin
boot
cdrom
dev
etc
home
initrd.img
initrd.img.old
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
snap
srv
swapfile
sys
timeshift
tmp
usr
var
vmlinuz
vmlinuz.old