使用Python枚举CD驱动器(Windows)
我怎么才能找到可用的CD/DVD驱动器的盘符呢?
我在Windows上使用的是Python 2.5.4。
5 个回答
2
通过使用Python for Windows扩展,你可以这样做:
[drive for drive in win32api.GetLogicalDriveStrings().split('\x00')[:-1]
if win32file.GetDriveType(drive)==win32file.DRIVE_CDROM]
这个内容是改编自这篇帖子。
这样做的话,即使光驱里没有光盘,你也能获取到驱动器的字母。
10
使用win32api,你可以获取驱动器的列表,然后通过GetDriveType来检查每个驱动器的类型。你可以通过'Python for Windows Extensions'或者ctypes模块来访问win32api。
下面是一个使用ctypes的例子:
import string
from ctypes import windll
driveTypes = ['DRIVE_UNKNOWN', 'DRIVE_NO_ROOT_DIR', 'DRIVE_REMOVABLE', 'DRIVE_FIXED', 'DRIVE_REMOTE', 'DRIVE_CDROM', 'DRIVE_RAMDISK']
def get_drives():
drives = []
bitmask = windll.kernel32.GetLogicalDrives()
for letter in string.uppercase:
if bitmask & 1:
drives.append(letter)
bitmask >>= 1
return drives
for drive in get_drives():
if not drive: continue
print "Drive:", drive
try:
typeIndex = windll.kernel32.GetDriveTypeW(u"%s:\\"%drive)
print "Type:",driveTypes[typeIndex]
except Exception,e:
print "error:",e
这个例子会输出:
Drive: C
Type: DRIVE_FIXED
Drive: D
Type: DRIVE_FIXED
Drive: E
Type: DRIVE_CDROM
2
如果你使用 WMI模块,那就非常简单了:
import wmi
c = wmi.WMI()
for cdrom in c.Win32_CDROMDrive():
print cdrom.Drive, cdrom.MediaLoaded
这里的 Drive
属性可以告诉你光驱的盘符,而 MediaLoaded
则可以告诉你光驱里是否有东西。
如果你不知道,WMI 是 Windows管理工具 的缩写,它是一个可以让你查询系统管理信息的接口。简单来说,WMI 是 Windows 对 通用信息模型 标准的实现。Python 的 WMI模块让你可以轻松访问 Windows 的 WMI 调用。
在上面的代码中,我们查询了 Win32_CDROMDrive
WMI 类,以了解系统中的光驱信息。这会给我们一个包含很多属性的对象列表,告诉我们关于光驱的所有信息。我们只关注盘符和媒体状态,因为这就是我们现在需要知道的。