如何使用 'serial.tools.list_ports' python 模块获取可用串口列表?

How can I get a list of available serial ports using 'serial.tools.list_ports' python module?

我是 python 的新手,我需要可用串口的列表以便在程序中选择其中一个。根据 Thisserial.tools.list_ports 模块可以通过执行 serial.tools.list_ports.comports() 方法为我做到这一点。因此,我在 python 解释器中执行了以下代码:

import serial.tools.list_ports
a=serial.tools.list_ports.comports()
print(a)

结果是:

[<serial.tools.list_ports_linux.SysFS object at 0x7f2503d27be0>]

而当我在 ubuntu 终端中使用以下命令时

python3 -m serial.tools.list_ports

它returns我想要的:

/dev/ttyUSB0        
1 ports found

问题出在哪里?

根据您链接的文档,

The function returns a list of ListPortInfo objects.

它们有几个您可以使用的属性,例如 device:

Full device name/path, e.g. /dev/ttyUSB0

为了模拟命令 python3 -m serial.tools.list_ports,您可以这样做:

import serial.tools.list_ports

ports = serial.tools.list_ports.comports()
for p in ports:
    print(p.device)
print(len(ports), 'ports found')

这是什么的简化版呢actually does.

returns 列表(使用答案 above/below)的一种更简单的方法是在遍历从 list_ports.comports()

获得的端口列表时使用 .device

例如

ports = serial.tools.list_ports.comports()
# 'com_list' contains list of all com ports

com_list = []

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