Windows环境下Python如何获取当前已连接且正常工作的驱动器列表
Windows环境Python获取正常可用驱动器列表实现方案
你当前使用的win32api.GetLogicalDriveStrings()只能枚举系统注册的所有逻辑盘符,不会校验盘符对应的存储设备是否正常挂载、可访问,要过滤出正常工作的驱动器,只需要在原有代码基础上增加盘符有效性校验即可。
完整实现代码
import win32api def get_available_drives(): # 先获取所有逻辑盘符列表 all_drives = win32api.GetLogicalDriveStrings().split('\000')[:-1] available_drives = [] for drive in all_drives: try: # 尝试读取驱动器卷信息,能正常读取说明设备处于可用状态 win32api.GetVolumeInformation(drive) available_drives.append(drive) except win32api.error: # 抛出异常说明驱动器不可用(空光驱、未插入的读卡器、已弹出的U盘等) continue return available_drives # 调用示例(Python3运行需给print加括号) print get_available_drives()
方案说明
- 核心逻辑是通过调用
win32api.GetVolumeInformation()尝试读取驱动器的卷标等信息,如果调用没有抛出异常,就代表这个驱动器当前处于可正常访问的工作状态 - 异常捕获会自动过滤掉有盘符但无对应有效设备的情况,包括空的光盘驱动器、未插卡的读卡器、已经弹出但盘符未回收的移动存储设备等
- 如果你需要额外筛选特定类型的驱动器,可以在遍历中追加
win32api.GetDriveType(drive)的返回值判断:- 返回值为2:可移动磁盘(U盘、移动硬盘等)
- 返回值为3:本地硬盘
- 返回值为5:光盘驱动器
内容的提问来源于stack exchange,提问作者Natejoestev
相关产品推荐
相关产品推荐

