Обнаружение внешнего жесткого диска после изменения буквы в Python

Я пишу программу Python для сканирования и отслеживания файлов на нескольких внешних жестких дисках. Он сохраняет путь к файлу как строку в локальном файле. Проблема в том, что иногда, когда я подключаю внешний жесткий диск к другому компьютеру, смена буквы и путь, сохраненный ранее, бесполезны. Я хочу отслеживать диск и изменять локальные записи, если один и тот же жесткий диск подключен, но письмо изменилось. Сейчас я могу представить две возможности:

  1. Сохраните файл идентификации в корневом каталоге диска и отсканируйте все буквы диска, чтобы обнаружить диск с правильным идентификационным файлом.
  2. Сканирование всей буквы в начале для обнаружения файла по тому же пути, что и локальная запись. Если найдено, укажите диск.

Я хочу знать, существует ли какая-либо существующая идентификация для HDD (или раздела), которую я могу использовать для доступа к диску (кроме буквы диска)?

2 ответа

Для идентификации диска используйте идентификатор поставщика и идентификатор устройства.

#!/usr/bin/python
import sys
import usb.core
# find USB devices
dev = usb.core.find(find_all=True)
# loop through devices, printing vendor and product ids in decimal and hex
for cfg in dev:
 sys.stdout.write('Decimal VendorID=' + str(cfg.idVendor) + ' & ProductID=' + str(cfg.idProduct) + '\n')
 sys.stdout.write('Hexadecimal VendorID=' + hex(cfg.idVendor) + ' & ProductID=' + hex(cfg.idProduct) + '\n\n')

Используйте PyUSB для поиска идентификаторов поставщиков и продуктов для USB-устройств

Вопрос Similare: идентификация устройства USB


Да, вы можете использовать серийный номер тома для идентификации жесткого диска. Серийный номер тома генерируется Windows при создании или форматировании раздела.

Вы должны сделать это через Python с помощью кода ниже, заменив c на нужный раздел:

import subprocess

subprocess.check_output(["vol", "C:"])

licensed under cc by-sa 3.0 with attribution.