Перечислять CD-приводы с использованием Python (Windows) - PullRequest
2 голосов
/ 18 февраля 2010

Как узнать буквы дисков доступных дисководов CD / DVD?

Я использую Python 2.5.4 в Windows.

Ответы [ 5 ]

9 голосов
/ 18 февраля 2010

Используя win32api, вы можете получить список дисков и используя GetDriveType вы можете проверить, какой это тип диска, вы можете получить доступ к win32api с помощью 'Python для расширений Windows' или модуля ctypes

Вот пример использования 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 голосов
/ 18 февраля 2010

Использование Функция GetDriveType из win32file модуля.

Пример кода:

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))
2 голосов
/ 18 февраля 2010

Если вы используете модуль WMI , это очень просто:

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

Атрибут Drive даст вам букву диска, а MediaLoaded скажет, есть лив драйв.

Если вы не знали, стандарты WMI для Инструментарий управления Windows и представляют собой API, который позволяет запрашивать информацию управления системой.(WMI - это реализация Windows стандарта Common Information Model стандарта Windows.) Модуль Python WMI обеспечивает простой доступ к вызовам Windows WMI.

В приведенном выше коде мызапросить Win32_CDROMDrive WMI Class , чтобы узнать о дисководах CD-ROM в системе.Это дает нам список объектов с огромным количеством атрибутов, который говорит нам все, что мы когда-либо хотели бы знать о CD-приводах.Мы проверяем букву диска и состояние носителя, так как это все, что нам нужно сейчас.

2 голосов
/ 18 февраля 2010

С расширениями Python для Windows вы можете использовать:

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

Адаптировано из этой записи .

Это даст вамбуквы дисковода, даже если в дисководе нет CD / DVD.

0 голосов
/ 18 февраля 2010

вы можете использовать WMI, см. эту кулинарную книгу для примера

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...