Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
PHYSICALDRIVE & VOLUMEN
#1
Question 
Tengo instalados dos discos: PHYSICALDRIVE0 y PHYSICALDRIVE1
Mi unidad "C:" (la del SO) se encuentra en el PHYSICALDRIVE1

Logro averiguar ambos datos por separado, pero no encuentro el modo de correlacionarlos a través del uso de algún módulo (os, sys, psutil o algún otro). Es decir, deseo conocer sobre cuál de los discos físicos se encuentra instalado el SO en cualquier equipo con Windows.

Muchas gracias!
Responder
#2
Hola. Se me ocurre que podés expandir la variable %windir%. Por ejemplo:

  1. >>> os.path.expandvars("%windir%")
  2. 'C:\\Windows'


Eso ya te da la pauta de en qué unidad está instalado Windows. Podés quedarte solo con esa parte combinándolo con el módulo pathlib:

  1. >>> import pathlib
  2. >>> windir = pathlib.Path(os.path.expandvars("%windir%"))
  3. >>> windir.drive
  4. 'C:'


Saludos
Responder
#3
Hola Francisco, ante todo gracias por responder.

Hasta ahí no tengo problema, el punto es saber en qué disco físico está esa partición con el volúmen C:, si en el PHYSICALDRIVE0, en el PHYSICALDRIVE1, ..., o en el PHYSICALDRIVEn

Te adjunto una imagen ilustrativa. En ella el volumen C: está en el disco 1 (y no en el disco 0 como podría suponerse...)

Saludos


Archivos adjuntos Miniatura(s)
   
Responder
#4
Bien, encontré este código en StackOverflow, algo parecido a lo que vos buscás, que reconstruyéndolo un poco podría quedar así:

  1. import wmi
  2.  
  3. w = wmi.WMI()
  4. all_logical_disks = {}
  5. key = ""
  6. for physical_disk in w.Win32_DiskDrive():
  7. logical_disks = []
  8. for partition in physical_disk.associators("Win32_DiskDriveToDiskPartition"):
  9. for logical_disk in partition.associators("Win32_LogicalDiskToPartition"):
  10. key = logical_disk.Description
  11. if key not in all_logical_disks:
  12. all_logical_disks[key] = []
  13. logical_disks.append(logical_disk.Caption)
  14. if logical_disks:
  15. all_logical_disks[key].append(logical_disks)
  16. print(all_logical_disks)


(Necesita el módulo WMI, se instala vía pip install WMI).

En mi caso imprime lo siguiente porque solo tengo un disco:

Código:
{'Disco fijo local': [['E:', 'C:']]}

Acá tenés la referencia sobre la estructura Win32_DiskDrive que está recorriendo: https://docs.microsoft.com/en-us/windows...-diskdrive.

Saludos
Responder
#5
Gracias Francisco. Seguiré esa línea de investigación.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)