【问题标题】:Write raw disk bytes in Python在 Python 中写入原始磁盘字节
【发布时间】:2020-03-10 17:24:40
【问题描述】:

我正在寻找一种使用 Python 将原始字节写入磁盘映像的方法。例如,我有一个包含多个字符的列表,我需要将所有这些字符写入磁盘的不同部分。

在我的 Python 脚本中,我需要执行以下操作:我的列表 xab 包含我需要在我的 this 中写入的所有字符,而 SelectedSectors 列表包含将与每个字符一起写入的扇区xab 个字符。

disk = open("mydisk.img",'ab')
for i in SelectedSectors:
    disk.seek(SelectedSectors[i])
    disk.write(xab[i])
disk.close()

我不确定如何使用 Python 处理磁盘映像中的单个字节。我该如何解决这个问题?

最好的问候,

F.博尔赫斯

【问题讨论】:

  • 您究竟为什么需要这样做?你想解决什么问题?
  • 我正在开发基于 Python 的自定义磁盘实用程序。这是实验性的,但基本上我需要将原始字节写入特定的扇区。

标签: python raw-disk


【解决方案1】:

追加模式在最后自动执行所有写入。以rb+ 模式打开文件。 r 防止在打开文件时截断文件,+ 允许在读取之外进行写入。

另外,for i in SelectedSectorsi 设置为列表的元素,而不是索引;您不需要在循环内索引列表。

with open("mydisk.img",'rb+') as disk:
    for i in SelectedSectors:
        disk.seek(i)
        disk.write(xab[i])

【讨论】:

  • 我尝试这样做,但出现此错误:disk.write(xab[i]) TypeError: '_io.TextIOWrapper' object is not subscriptable
  • 您写道,xab 是一个列表。显然不是,你需要正确访问它/。
  • xab = open("stuff.raw", "r") 它被读取一个文件并且内容存储在变量xab中
  • 尝试xab = open("stuff.raw", "r").readlines() 从文件中获取行列表。
  • 文件对象不是列表。你可以循环它,因为它是一个迭代器,但你不能索引它。
猜你喜欢
  • 2014-10-24
  • 2012-09-02
  • 2014-11-14
  • 2014-03-09
  • 1970-01-01
  • 2021-11-20
  • 2018-11-03
  • 2014-04-30
  • 2015-01-19
相关资源
最近更新 更多