python - 将 Windows CDROM 驱动器视为 block 文件?

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

我正在尝试使用 Python 模块(准确地说是 python-dvdvideo)来克隆 ISO 镜像。如果我将我的计算机上已有的 ISO 文件的文件路径传递给它,所提供的类工作正常,但如果我尝试将我的 CDROM 驱动器的盘符传递给它,它会抛出异常。

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

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/* 下的 block 设备文件),但不熟悉 Windows 如何看待驱动器。

最佳答案

在尝试做类似的事情时,我发现了 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 上的数据 session 。所以谨慎使用。

关于python - 将 Windows CDROM 驱动器视为 block 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35543151/

相关文章:

python - 匹配和追加

Python Setup.py : set environment variable prior to running install_requires

python - 值错误 : None values not supported Keras Custom Loss Function in Tensorflow

windows - 如何在 Windows 7 中为 mongoDB 设置默认 dbpath?

c++ - 使用没有无限循环的 C++ i 检测文本文件中的更改?

java - 从主类读取数据

python - 使用请求解析亚马逊上的产品标题

python - Windows 机器上 IPython 控制台中的多处理 - 如果 __name_ 要求

c# - 将 ASP.NET 4 Web 应用程序部署到 IIS6 服务器后,工作进程回收导致其大部分时间停止工作

java - Java套接字将byte []传输到.wav