在Python中检测更改字母后的外部硬盘驱动器

4 投票
3 回答
2520 浏览
提问于 2025-04-18 11:44

我正在写一个Python程序,用来扫描和记录几个外部硬盘上的文件。程序会把文件路径以字符串的形式保存在本地文件里。问题是,有时候我把外部硬盘插到不同的电脑上,盘符会改变,这样之前存储的路径就没用了。我想要跟踪这个硬盘,如果同一个硬盘插入但盘符变了,就更新本地记录。目前我想到两种方法:

  1. 在硬盘的根目录下放一个识别文件,然后扫描所有盘符,找到带有正确识别文件的硬盘。
  2. 一开始扫描所有盘符,看看哪个盘符下的文件路径和本地记录一致。如果找到,就确认这个硬盘。

我想知道有没有什么现成的方式可以用来识别硬盘(或者分区),让我可以访问这个硬盘(除了盘符以外)?

3 个回答

-1

要找到USB和外部硬盘

import wmi
import os
w = wmi.WMI()

for drive in w.Win32_LogicalDisk():
    print(drive)
    if drive.VolumeDirty == True:
        print (drive.Caption, drive.VolumeName, drive.DriveType)
2

是的,你可以用卷序列号来识别硬盘。卷序列号是在你创建或格式化一个分区时,Windows系统自动生成的。

你可以通过Python来实现这个功能,下面的代码可以帮你做到,只需要把c替换成你想要的分区字母就可以了:

import subprocess

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

使用供应商ID和设备ID来识别硬盘。

#!/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设备的供应商和产品ID

类似的问题:USB设备识别

撰写回答