Python中的Pyserial(列出不带for循环的可用组件)

Python中的Pyserial(列出不带for循环的可用组件),python,port,python-3.5,pyserial,Python,Port,Python 3.5,Pyserial,您可以遍历列表并获取名称: import serial.tools.list_ports ports = serial.tools.list_ports.comports() available_ports = [] for p in ports: available_ports.append(p.device) print(available_ports) comports()方法返回ListPortInfo对象 然后,您可以访问此类的一组属性以获得所需的结果: name:

您可以遍历列表并获取名称:

import serial.tools.list_ports

ports = serial.tools.list_ports.comports()

available_ports = []

for p in ports:
    available_ports.append(p.device)

print(available_ports)
comports()
方法返回
ListPortInfo
对象

然后,您可以访问此类的一组属性以获得所需的结果:

  • name
    :短设备名称,例如
    ttyUSB0
  • device
    :完整的设备名称/路径,例如
    /dev/ttyUSB0

这方面的一般解决方案可以是:

import serial.tools.list_ports

ports = serial.tools.list_ports.comports()

print([port.name for port in ports])
报表打印

ports = [p.name for p in comports()]
在Windows 10中(使用python 3.61+pyserial v3.4)。改为

port=[p.device for p in comports()]

获取有效的端口名

[None, None, None, None]

作为一个稍微令人讨厌的黑客,comports()返回的对象是一个生成器。您只需通过强制转换即可获得列表(在本例中为列表列表或二维表):

['COM1', 'COM2', 'COM5', 'COM6']

但是,如果您只需要名称,您仍然需要提取列,因此上述解决方案更好。

谢谢!!我只是不知道如何访问对象中的其他信息,我不知道我可以通过port.name访问name。我想你解决了我的问题,但我身上没有设备,我无法测试。在Windows上,我不得不使用
端口.设备
,因为
端口.名称
是空的。谢谢!我已经读过几遍了,但我不知道如何获取具体信息。我想等明天我有了设备,我就能解决我的问题了。谢谢@abe很乐意帮忙!!
[None, None, None, None]
['COM1', 'COM2', 'COM5', 'COM6']
from serial.tools.list_ports import comports
allPorts = list ( comports() )
print allPorts