首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pexpect:如何使用更新版本的pexpect库在文件对象上交互()

pexpect:如何使用更新版本的pexpect库在文件对象上交互()
EN

Stack Overflow用户
提问于 2016-09-22 14:19:49
回答 1查看 531关注 0票数 0

自从Ubuntu15.04 (3.2)提供的版本以来,pexpect经历了巨大的变化。当使用pexpect安装最新版本的pip3时,这个以前成功地通过串行控制台进行终端仿真的最小程序不再工作了:

代码语言:javascript
复制
#!/usr/bin/python3

import serial
import pexpect.fdpexpect

ser = serial.Serial("/dev/ttyS0", baudrate=115200)
spawn = pexpect.fdpexpect.fdspawn(ser)
spawn.interact()

pexpect.fdpexpect.fdspawn类中缺少了新的API交互()方法,它以前就在那里。

问题:是如何使用较新版本的pexpect (目前为4.2.1)来提供与文件对象的免费手动交互(在本例中为串口)?

或者,问题/工作-:我认识到,对于这样一个简单的用例,我使用了一些很重的机器,对于其他库,有什么建议可以和早期版本的pexpect一样吗?

代码读取:示例使用pexpect.spawn(command_str)获取具有interact()方法的spawn对象;实际上,该pexpect.spawn()与直接创建具有此方法的pexpect.pty_spawn.spawn对象相同。另一方面,pexpect.fdpexpect.fdspawn()将构造一个缺少interact()方法的pexpect.fdpexpect.fdspawn类。这两个派生类都是从pexpect.spawnbase.SpawnBase类派生的。根据我的快速阅读,这看起来像回归,这是在4.x版本的过程中重构的结果。

EN

回答 1

Stack Overflow用户

发布于 2016-09-23 02:53:33

浏览帕普 问题,找到#351#356和新提交的#377。通过我的快速阅读,这似乎是在迈向新的主要版本4的过程中由于未完成的重构而带来的一种倒退。

  1. 确保安装旧版本: $ pip3安装"pexpect<3“ (或确保其他系统安装的版本为3.x)。
  2. 自己修复pexpect
  3. 使用其他python库。

github用户@takluyver (显然是pexpect的维护者)在评论第351期时或多或少暗示了这些途径:

@jquast对此有什么想法(和#356)?我感到很遗憾,我们破坏了人们对fdspawn所做的事情,但我真的不想让它继承pty spawn类,现在它在Windows上工作了,我认为保存它也很重要。 也许我们应该说:

  • 如果有与Pexpect 4不同的遗留代码,则降级为Pexpect 3.x (pip install pexpect<4)
  • 如果您正在编写新代码,请使用流线期望而不是pexpect。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39641627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档