Python 为什么pySerial套接字协议不支持fileno()?

Python 为什么pySerial套接字协议不支持fileno()?,python,sockets,pyserial,uart,pexpect,Python,Sockets,Pyserial,Uart,Pexpect,我的目标是能够在uart串行接口上使用python expect模块 我正在尝试将pySerial(serial)python模块连接到pexpect模块。但是,我正在使用套接字协议,使用serial.serial\u for_url()函数通过套接字远程访问串行端口 执行此操作时失败,因为select()需要在串行对象中定义fileno()。我得到以下错误: io.UnsupportedOperation:fileno 为什么套接字协议可以使用socket.fileno()? 我试过了,它似乎

我的目标是能够在uart串行接口上使用python expect模块

我正在尝试将pySerial(
serial
)python模块连接到
pexpect
模块。但是,我正在使用套接字协议,使用
serial.serial\u for_url()
函数通过套接字远程访问串行端口

执行此操作时失败,因为
select()
需要在串行对象中定义
fileno()。我得到以下错误:
io.UnsupportedOperation:fileno

为什么套接字协议可以使用
socket.fileno()
? 我试过了,它似乎在linux下正常工作

是否有任何原因说明在
serial.urlhandlers.protocol_socket.py
中默认不支持此操作

编辑

我运行了以下命令:

>>> import serial
>>> import fdpexpect
>>> fd = serial.serial_for_url('socket://10.28.1.15:7002')
>>> px = fdpexpect.fdspawn(fd, logfile=open('test.log','w'))
请注意,您需要具有uart到网桥的硬件。我在那个特定的测试中使用了Digi32CM,但它并不真正相关

运行
fdspawn()
函数时,出现以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "python2.7/site-packages/pexpect/fdpexpect.py", line 45, in __init__
    fd = fd.fileno()
io.UnsupportedOperation: fileno

我想知道我是否遗漏了什么?

有关信息,fileno()在几年前已添加到pyserial中,现在工作正常。

您应该显示一些代码,最好是一个可以剪切并粘贴到文件中的小型独立程序,并在执行时演示问题。另外,
fileno()根据文档,只有UNIX平台才支持串行对象上的
。你在什么平台上?你的pySerial版本是什么?我使用的是pySerial版本2.7和pexpect版本3.3,只是没有实现。您已经知道如何自己实现它了。
def fileno(self):
    return self._socket.fileno()