Liste les ports com disponibles avec Python

Je suis à la recherche d'une méthode simple pour la liste de tous les port com disponible sur un PC.

J'ai trouvé cette méthode, mais elle est spécifique à Windows: Inscription en série (COM) ports sur Windows?

Je suis à l'aide de Python 3 avec pySerial sur un PC Windows 7.

J'ai trouvé dans le pySerial API (http://pyserial.sourceforge.net/pyserial_api.html) une fonction serial.tools.list_ports.comports() qui répertorie les ports com (exactement ce que je veux).

import serial.tools.list_ports
print(list(serial.tools.list_ports.comports()))

Mais il semble que cela ne fonctionne pas. Lors de ma clé USB pour COM passerelle est connectée au PC (je vois le COM5 dans le Gestionnaire de Périphérique), ce port COM n'est pas inclus dans la liste renvoyée par list_ports.comports(). Au lieu de cela je ne reçois COM4 qui semble être connecté à un modem (je ne la vois pas dans la COM&LPT section du Gestionnaire de Périphériques)!

Savez-vous pourquoi il ne fonctionne pas? Avez-vous une autre solution qui n'est pas spécifique au système?

  • Les nouveaux lecteurs: notez que cela fait plus de cinq ans depuis que cette question a été posée, et le bug dans pySerial de comports() fonction de ce qui est décrit dans cette question (sans informations précises sur la façon de le reproduire) a probablement été corrigé. Commencez par essayer import serial.tools.list_ports; print([comport.device for comport in serial.tools.list_ports.comports()]). Seulement si cela ne fonctionne pas pour vous sont une des réponses ci-dessous pertinentes pour vous.
  • Également à de nouveaux lecteurs: apparemment, en raison de changements dans pySerial, le code décrit par les OP (et de réponses) ne produit plus d'une liste de COM port noms, qu'il soit complet ou incomplet. Au lieu de cela, il génère une liste de références de l'objet à ListPortInfo objets. Pour obtenir les noms ou d'autres informations que vous devez utiliser les attributs de ces objets lors de la construction de la liste. Voir: pythonhosted.org/pyserial/...
InformationsquelleAutor doom | 2012-08-23