2

我正在尝试使用 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 CDROM 驱动器视为其中之一?我对 Linux 在这方面的工作方式有点熟悉(它将 CDROM 驱动器视为 /dev/* 下的块设备文件),但不熟悉 Windows 如何看待驱动器。

4

1 回答 1

0

在尝试做类似的事情时,我发现这个线程很有用。根据那里(以及这里)的信息,我创建了这个,它向您展示了基础知识:

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 等专用成像工具相比,以这种方式读取的数据可能不完整。此外,访问“增强”音频 CD 上的数据会话似乎也不起作用。所以谨慎使用。

于 2017-01-19T17:16:00.827 回答