在Python中检测更改字母后的外部硬盘驱动器
我正在写一个Python程序,用来扫描和记录几个外部硬盘上的文件。程序会把文件路径以字符串的形式保存在本地文件里。问题是,有时候我把外部硬盘插到不同的电脑上,盘符会改变,这样之前存储的路径就没用了。我想要跟踪这个硬盘,如果同一个硬盘插入但盘符变了,就更新本地记录。目前我想到两种方法:
- 在硬盘的根目录下放一个识别文件,然后扫描所有盘符,找到带有正确识别文件的硬盘。
- 一开始扫描所有盘符,看看哪个盘符下的文件路径和本地记录一致。如果找到,就确认这个硬盘。
我想知道有没有什么现成的方式可以用来识别硬盘(或者分区),让我可以访问这个硬盘(除了盘符以外)?
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')
类似的问题:USB设备识别