Python 中的 Pyserial(列出没有 for 循环的可用组件)
Pyserial in Python(List out available comports without for loop)
import serial.tools.list_ports
ports = serial.tools.list_ports.comports()
print(ports)
#[<serial.tools.list_ports_common.ListPortInfo object at 0x000001D48771C9B0>, <serial.tools.list_ports_common.ListPortInfo object at 0x000001D48866FB00>]
如您所见,comports 不可读,我可以通过 for 循环使其可读,但我需要在列表中使用可读单词,例如。 ["COM1","COM2","COM3"]
有人知道要改吗?我尝试创建一个新列表并在循环中追加也没有运气。当我打印出来时,结果是一样的。
更新:
我认为我上次所做的是再次将每个对象附加在一起。我能够通过以下代码获得我想要的特定信息,即 COM:
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)
您可以遍历列表并获取名称:
import serial.tools.list_ports
ports = serial.tools.list_ports.comports()
print([port.name for port in ports])
comports()
方法returnListPortInfo
对象。
然后,您可以访问此 class 的一堆属性以获得所需的结果:
name
:短设备名称,例如ttyUSB0
device
:完整设备 name/path,例如/dev/ttyUSB0
对此的一般解决方案可能是:
from serial.tools.list_ports import comports
ports = [p.name for p in comports()]
print(ports)
ports = [p.name for p in comports()]
语句打印
[None, None, None, None]
in Windows 10(使用 python 3.61 + pyserial v3.4)。改为
ports = [p.device for p in comports()]
获取有效的端口名称。
['COM1', 'COM2', 'COM5', 'COM6']
作为一个有点讨厌的 hack,comports() 返回的对象是一个生成器。您只需通过转换即可获得列表(在本例中为列表的列表,或 2D table):
from serial.tools.list_ports import comports
allPorts = list ( comports() )
print allPorts
但是,如果你只是想要名字,你仍然需要提取一列,所以上面的解决方案更好。
import serial.tools.list_ports
ports = serial.tools.list_ports.comports()
print(ports)
#[<serial.tools.list_ports_common.ListPortInfo object at 0x000001D48771C9B0>, <serial.tools.list_ports_common.ListPortInfo object at 0x000001D48866FB00>]
如您所见,comports 不可读,我可以通过 for 循环使其可读,但我需要在列表中使用可读单词,例如。 ["COM1","COM2","COM3"]
有人知道要改吗?我尝试创建一个新列表并在循环中追加也没有运气。当我打印出来时,结果是一样的。
更新: 我认为我上次所做的是再次将每个对象附加在一起。我能够通过以下代码获得我想要的特定信息,即 COM:
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)
您可以遍历列表并获取名称:
import serial.tools.list_ports
ports = serial.tools.list_ports.comports()
print([port.name for port in ports])
comports()
方法returnListPortInfo
对象。
然后,您可以访问此 class 的一堆属性以获得所需的结果:
name
:短设备名称,例如ttyUSB0
device
:完整设备 name/path,例如/dev/ttyUSB0
对此的一般解决方案可能是:
from serial.tools.list_ports import comports
ports = [p.name for p in comports()]
print(ports)
ports = [p.name for p in comports()]
语句打印
[None, None, None, None]
in Windows 10(使用 python 3.61 + pyserial v3.4)。改为
ports = [p.device for p in comports()]
获取有效的端口名称。
['COM1', 'COM2', 'COM5', 'COM6']
作为一个有点讨厌的 hack,comports() 返回的对象是一个生成器。您只需通过转换即可获得列表(在本例中为列表的列表,或 2D table):
from serial.tools.list_ports import comports
allPorts = list ( comports() )
print allPorts
但是,如果你只是想要名字,你仍然需要提取一列,所以上面的解决方案更好。