Was ist die plattformübergreifende Methode zum Auflisten serieller Ports in Python (einschließlich virtueller Ports)?

Hinweis: Ich verwende Python 2.7 und pySerial für die serielle Kommunikation.

Ich habe diesen Artikel gefunden, der zwei Möglichkeiten auflistet:http://www.zaber.com/wiki/Software/Python#Displaying_a_list_of_available_serial_ports

Diese Methode funktioniert unter Windows und Linux, es fehlen jedoch manchmal virtuelle Ports unter Linux:

import serial

def scan():
   # scan for available ports. return a list of tuples (num, name)
   available = []
   for i in range(256):
       try:
           s = serial.Serial(i)
           available.append( (i, s.portstr))
           s.close()
       except serial.SerialException:
           pass
   return available

print "Found ports:"
for n,s in scan(): print "(%d) %s" % (n,s)

Und dieses, das nur unter Linux funktioniert, aber virtuelle Ports enthält:

import serial, glob

def scan():
   # scan for available ports. return a list of device names.
   return glob.glob('/dev/ttyS*') + glob.glob('/dev/ttyUSB*')

print "Found ports:"
for name in scan(): print name

Ich nehme an, ich könnte die Plattformerkennung durchführen, um die zweite Methode (die virtuelle Ports enthält) unter Linux und die erste Methode unter Windows zu verwenden, aber was ist mit dem Mac?

Wie soll ich serielle Ports (auch virtuelle) unabhängig von der Plattform auflisten?

Bearbeiten

Ich habe ein paar relevante Fragen gefunden:

MacPython: Programmgesteuertes Finden aller seriellen PortsMacOS: Was ist der Unterschied zwischen /dev/tty.* und /dev/cu.*?Wie finde ich alle seriellen Geräte (ttyS, ttyUSB, ..) unter Linux, ohne sie zu öffnen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage