使用Python枚举CD驱动器(Windows)

时间:2010-02-18 11:07:22

标签: python windows

如何查找可用CD / DVD驱动器的驱动器号?

我在Windows上使用Python 2.5.4。

5 个答案:

答案 0 :(得分:9)

使用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

答案 1 :(得分:2)

使用Python for Windows extensions,您可以使用:

[drive for drive in win32api.GetLogicalDriveStrings().split('\x00')[:-1] 
 if win32file.GetDriveType(drive)==win32file.DRIVE_CDROM]

改编自this post

即使驱动器中没有CD / DVD,也会显示驱动器号。

答案 2 :(得分:2)

如果您使用WMI Module,则非常简单:

import wmi
c = wmi.WMI()
for cdrom in c.Win32_CDROMDrive():
    print cdrom.Drive, cdrom.MediaLoaded

Drive属性会为您提供驱动器号,MediaLoaded会告诉您驱动器中是否有内容。

如果您不知道,Windows Management Instrumentation的WMI标准,并且是一个API,允许您查询有关系统的管理信息。 (对于它的价值,WMI是Common Information Model标准的Windows实现。)Python WMI模块使您可以轻松访问Windows WMI调用。

在上面的代码中,我们查询Win32_CDROMDrive WMI Class以了解系统上的CD ROM驱动器。这为我们提供了一个具有大量属性的对象列表,这些属性告诉我们有关CD驱动器的所有信息。我们检查驱动器号和媒体状态,因为这就是我们现在所关心的。

答案 3 :(得分:2)

使用win32file模块中的GetDriveType Function

示例代码:

import win32file
for d in ('C', 'D', 'E', 'F', 'G'):
    dname='%c:\\' % (d)
    dt=win32file.GetDriveType(dname)
    if dt == win32file.DRIVE_CDROM:
        print('%s is CD ROM' % (dname))

答案 4 :(得分:0)

您可以使用WMI,请参阅this cookbook以获取示例