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

标签 python python-3.x linux pexpect

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

关于python - Pexpect PopenSpawn 在标准输出上不显示任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57926469/

相关文章:

python - 如何根据不同的索引阈值过滤数据帧

linux - 使用shell脚本获取网络中的图像列表

python - 从 Spyder 中的命令行调试 Python 函数(或类)

python - 单击单独文件中的命令

python - Django 中的 Kwargs

variables - 在Python中使用PASS单词作为变量名

python-3.x - 用户输入元组列表?

python - ArgumentParser.add_argument : How to use action parameter with custom type parameter?

linux - 获取自 Linux 上的 Epoch、Bash 以来的当前时间(以秒为单位)

Python MySQL 连接器偶尔无法插入/更新