如何列出所有港口?

问题描述

我使用pip install pyserial安装了pyserial,现在我试图运行以下代码以列出台式机上的所有命令。如果重要的话,我正在使用PyCharm。

import serial.tools.list_ports

def serial_ports():
    print(list(serial.tools.list_ports.comports()))

if __name__ == '__main__':
    serial_ports()

现在,它只是打印出[],而没有其他内容。我什至不确定我的计算机是否有故障,因为当我检查my device manager时,没有看到任何称为“端口(COM和LPT)”的信息。任何帮助表示赞赏。

解决方法

尝试一下:更新

import sys
import glob
import serial


def serial_ports():
    """ Lists serial port names

        :raises EnvironmentError:
            On unsupported or unknown platforms
        :returns:
            A list of the serial ports available on the system
    """
    if sys.platform.startswith('win'):
        ports = ['COM%s' % (i + 1) for i in range(256)]
    elif sys.platform.startswith('linux') or sys.platform.startswith('cygwin'):
        # this excludes your current terminal "/dev/tty"
        ports = glob.glob('/dev/tty[A-Za-z]*')
    elif sys.platform.startswith('darwin'):
        ports = glob.glob('/dev/tty.*')
    else:
        raise EnvironmentError('Unsupported platform')

    result = []
    for port in ports:
        try:
            s = serial.Serial(port)
            s.close()
            result.append(port)
        except (OSError,serial.SerialException):
            pass
    return result


if __name__ == '__main__':
    print(serial_ports())