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
我想尝试使用 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