Имя флешки и серийный номер

Не получается узнать имя диска(C,D,E...) и серийный номер одновременно. Есть код для получения серийного номера и код для получения имени диска. ОС:Windiws

Серийный номер:

import wmi
c = wmi.WMI()

for drive in c.Win32_DiskDrive():
    print("Description: "+ drive.Description)
    print("InterfaceType: " + drive.InterfaceType)
    print("Model: " + drive.Model)
    print("SerialNumber: "+drive.SerialNumber)
    print("DeviceID: "+ drive.DeviceID)
    #print(drive.Caption)
    print("\n")

Имя диска:

import wmi
c = wmi.WMI()

for disk in c.Win32_LogicalDisk():
   print(disk.DeviceID)

Как получить одновременно имя диска (или просто название флешки) и серийный номер?


Ответы (1 шт):

Автор решения: GrAnd

Вот так можно сопоставить логические разделы физическим носителям:

logical_disks = {}
for drive in c.Win32_DiskDrive():
    for partition in drive.associators("Win32_DiskDriveToDiskPartition"):
        for disk in partition.associators("Win32_LogicalDiskToPartition"):
            logical_disks[disk.Caption] = {"model":drive.Model, "serial":drive.SerialNumber}
        
print(logical_disks)
{'C:': {'model': 'C300-CTFDDAC128MAG ATA Device', 
        'serial': '3030303030303030313136308830323044363145'}, 
 'D:': {'model': 'Hitachi HDS723020BLA642 ATA Device', 
        'serial': '2020202020204e4d32334032334659305931444b'},
 'F:': {'model': 'Samsung SSD 860 EVO 500GB ATA Device', 
       'serial': '34535783474e4b30334334343339505820202020'},
 'E:': {'model': 'WDC WD30EZRZ-00Z5HB0 ATA Device', 
        'serial': '2020202057202d4443573443944e465a4c41484e'}}
→ Ссылка