Рассматривать дисковод компакт-дисков Windows как блочный файл?

Я пытаюсь использовать модуль Python (python-dvdvideo для точно) для клонирования ISO-образа. Предоставленный класс работает нормально, если я передаю ему путь к файлу ISO, который уже находится на моем компьютере, но он выдает исключение, если вместо этого я пытаюсь передать ему букву диска моего привода CDROM.

Быстро изучив код библиотеки, я определил, что класс ожидает либо обычный файл, либо блочный файл специального устройства, как показано здесь:

def __init__(self, filename):
    s = os.stat(filename)
        if stat.S_ISREG(s.st_mode):
            f = self.File(filename)
        elif stat.S_ISBLK(s.st_mode):
            f = DvdCssFile(filename)
        else:
            raise RuntimeError

Это приводит меня к моему вопросу: есть ли способ обращаться с дисководом компакт-дисков Windows как с одним из них? Я смутно знаком с тем, как Linux работает в этом отношении (он рассматривает дисковод CDROM как файл блочного устройства в каталоге /dev/*), но не знаком с тем, как Windows видит диски.


person Christopher Sheaf    schedule 21.02.2016    source источник


Ответы (1)


Пытаясь сделать что-то подобное, я нашел эту тему полезной. На основе информации там (а также здесь) я создал это, которое показывает вам основы:

import os

driveName = "D"

# Get Window raw block device name from logical drive
# Adapted from https://stackoverflow.com/a/6523306/1209004
deviceName = "\\\\.\\" + driveName + ":" 

# Open as file object
# Adapted from https://stackoverflow.com/q/7135398/1209004
d = os.fdopen(os.open(deviceName, os.O_RDONLY|os.O_BINARY), 'rb+')

# Read data
data = d.read()

# Close file object
d.close()

# Write data to an output file
fOut = open('data.bin','wb')
fOut.write(data)
fOut.close()

Одна вещь, которую я отметил, заключается в том, что по сравнению со специализированными инструментами обработки изображений, такими как IsoBuster, данные, считанные таким образом, могут быть неполными. Кроме того, похоже, не работает доступ к сеансам данных на «расширенном» аудио компакт-диске. Так что используйте с осторожностью.

person johan    schedule 19.01.2017