【发布时间】:2012-08-18 21:39:33
【问题描述】:
我正在寻找一种简单的方法来列出 PC 上所有可用的 com 端口。
我找到了这种方法,但它是特定于 Windows 的:Listing serial (COM) ports on Windows?
我在 Windows 7 PC 上使用 Python 3 和 pySerial。
我在 pySerial API (http://pyserial.sourceforge.net/pyserial_api.html) 中找到了一个函数 serial.tools.list_ports.comports(),它列出了 com 端口(正是我想要的)。
import serial.tools.list_ports
print(list(serial.tools.list_ports.comports()))
但是好像不行。当我的 USB 转 COM 网关连接到 PC 时(我在设备管理器中看到 COM5),此 COM 端口不包含在 list_ports.comports() 返回的列表中。相反,我只得到了似乎连接到调制解调器的 COM4(我在设备管理器的 COM&LPT 部分中看不到它)!
你知道为什么它不起作用吗?您是否有其他非系统特定的解决方案?
【问题讨论】:
-
新读者:请注意,这个问题被问到已经过去五年多了,并且这个问题中描述的 pySerial 的
comports()函数中的错误(没有关于如何重现它的精确信息)已经可能已修复。首先尝试import serial.tools.list_ports; print([comport.device for comport in serial.tools.list_ports.comports()])。只有当这对您不起作用时,以下任何答案才与您相关。 -
也给新读者:显然由于 pySerial 的变化,OP 描述的代码(以及一些答案)不再生成 COM 端口名称列表,无论是完整的还是不完整的。相反,它会生成对
ListPortInfo对象的对象引用列表。要获取名称或其他信息,您必须在构建列表时使用这些对象的属性。见:pythonhosted.org/pyserial/…