Как проверить, существует ли в python жесткий диск (Windows)? то есть «\\. \ PhysicalDriveN», где N в номере дискаКак проверить, существует ли в Python Raw (размонтированный) диск Windows
Теперь я могу проверить, существует ли необработанный диск (как администратор), открыв и сразу же закрыв его. Если есть исключение, тогда необработанное устройство может не существовать, иначе это произойдет. Я знаю, что это не очень pythonic. Есть ли способ лучше?
os.access(drive_name, os.F_OK)
всегда возвращает False
. То же самое с os.path.exists(drive_name)
. Я бы предпочел просто использовать стандартную библиотеку python. os.stat(drive_name)
также не может найти устройство.
Пример моего рабочего кода:
drive_name = r"\\.\PhysicalDrive1"
try:
open(drive_name).close()
except FileNotFoundError:
print("The device does not exist")
else:
print("The device exists")
Вы можете использовать ctypes для вызова ['QueryDosDeviceW'] (https://msdn.microsoft.com/en-us/library/aa365461). Если существует символическая ссылка устройства DOS, это получает цель в пространстве имен объектов NT, например. '\\? \ PhysicalDrive0' =>' \ Device \ Harddisk0 \ DR0'. – eryksun
Например: 'target = (ctypes.c_wchar * 32768)();' 'target_len = ctypes.windll.kernel32.QueryDosDeviceW (u'PhysicalDrive0 ', target, len (target))'. – eryksun
@eryksun Если я правильно понял, вы говорите, что '\\. \ PhysicalDrive0' является символической ссылкой? Было бы проще проверить некоторые '\ Device \ Harddisk0'? Эта функция работает, хотя –