Я знаю, что это старый пост, но я боролся с ним сегодня.
В конечном итоге я использовал библиотеку wmi для python, поскольку я работаю на компьютере с Windows (извините, я знаю, что мой ответ применим только к Windows, но, возможно, он кому-нибудь поможет).
Сначала установите пакет, используя pip:
pip install wmi
затем
import wmi
c = wmi.WMI()
wql = "Select * From Win32_USBControllerDevice"
for item in c.query(wql):
print item.Dependent.Caption
Должно получиться что-то вроде:
USB Root Hub
USB Root Hub
Порт Prolific USB-to-Serial (COM9)
USB Root Hub
USB Root Hub
Составное USB-устройство
USB-видеоустройство
Аудиоустройство USB
USB Root Hub
... чик ...
В этом случае вам придется анализировать заголовок строки, чтобы найти COM-порт. Вы также можете посмотреть только на элемент. Зависимый объект для просмотра других атрибутов USB-устройства рядом с заголовком, которые могут оказаться уместными:
instance of Win32_PnPEntity
{
Caption = "USB Root Hub";
ClassGuid = "{36fc9e60-c465-11cf-8056-444553540000}";
ConfigManagerErrorCode = 0;
ConfigManagerUserConfig = FALSE;
CreationClassName = "Win32_PnPEntity";
Description = "USB Root Hub";
DeviceID = "USB\\ROOT_HUB\\4&32F13EF0&1";
HardwareID = {"USB\\ROOT_HUB&VID8086&PID3A36&REV0000",
"USB\\ROOT_HUB&VID8086&PID3A36", "USB\\ROOT_HUB"};
Manufacturer = "(Standard USB Host Controller)";
Name = "USB Root Hub";
PNPDeviceID = "USB\\ROOT_HUB\\4&32F13EF0&1";
Service = "usbhub";
Status = "OK";
SystemCreationClassName = "Win32_ComputerSystem";
SystemName = "001fbc0934d1";
};