正如ryksun]和gf在评论中指出的(但我一开始并没有真正了解它),解决方案非常简单:您必须在rb+
模式下打开设备,这会打开设备进行更新(如我所知)现在..),而不会尝试将其替换为新文件(该文件实际上是物理驱动器,因此不起作用)。
写入时,您必须一次始终写入整个扇区(即512字节的倍数),否则它将失败。
此外,该.seek()
命令还只能按扇区跳转。如果您尝试在一个扇区内寻找位置(例如position621
),则文件对象将跳至您所请求的位置所在的扇区的开头(即,第二个扇区的开头byte 512
)。