использование python для открытия устройства для необработанной записи - PullRequest
1 голос
/ 12 сентября 2011

Я пишу некоторый код для чтения и интерпретации MBR, а затем FAT флешки, отформатированной в fat32, все идет хорошо, теперь я хочу записать на устройство в определенной позиции, поэтому после закрытия устройства Я открыл, чтобы прочитать, я пытаюсь снова, как это:

dr = file("/dev/disk5","r+")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
 IOError: [Errno 16] Resource busy: '/dev/disk5'

Итак, я закрываю все и перезапускаю интерпретатор с помощью sudo (sudo python) и повторяю все с теми же результатами.

что я могу сделать, чтобы иметь возможность открыть устройство для доступа для записи? Спасибо РЕДАКТИРОВАТЬ с еще большим кодом.

import sys,os
disk = file("/dev/disk5",'rb')
disk.seek(0)
sector_size=512
first_sector = disk.read(1*sector_size)
fat_part_list = (first_sector[-66:])[:64]
part1=fat_part_list[:16]
#more code here in order to analyse the first partition information in the MBR and get the required offset to actually read the partition itself.
#now for instance lets say I want to write here in sector 1 byte 0 ( so basically at seek(0).
disk.close()#close the device
disk = file("/dev/disk5","r+")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  IOError: [Errno 16] Resource busy: '/dev/disk5'

на самом деле вы можете просто увидеть проблему следующим образом:

http://pastie.org/2521541

никогда не заставил форматирование работать должным образом ...

все это похоже на ошибку привилегий, но запуск интерпретатора с помощью sudo не приводит к изменениям.

1 Ответ

1 голос
/ 12 сентября 2011

Вы должны размонтировать блочное устройство, прежде чем открывать его в Python.

...