将Windows CDROM驱动器视为块文件?

时间:2016-02-21 22:51:05

标签: python windows file-io block-device cd-rom

我正在尝试使用Python模块(确切地说python-dvdvideo)来克隆ISO映像。如果我将文件路径传递给我的计算机上已经存在的ISO文件,则提供的类可以正常工作,但如果我尝试将其传递给我的CDROM驱动器的驱动器号,则会抛出异常。

在快速检查库的代码之后,我确定该类需要常规文件或块特殊设备文件,如下所示:

import

这引出了我的问题:有没有办法将Windows CDROM驱动器视为其中任何一种?我模糊地熟悉Linux在这方面的工作原理(它将CDROM驱动器视为/ dev / *下的块设备文件),而不是Windows如何看待驱动器。

1 个答案:

答案 0 :(得分:0)

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

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上的数据会话。所以要谨慎使用。