Python Запись 512-байтового блока нулей в /dev/sda работает, но не ведет себя так, как работает
Здесь я пытаюсь создать функцию (в конечном итоге) для поддержки очистки дисков с использованием нескольких спецификаций. Проблема, с которой я сталкиваюсь, заключается в том, что когда я пытаюсь записать ZeroBlock на диск, он записывается, но код ведет себя так, как если бы он вышел из строя. причина, по которой я говорю, что это сработало, заключается в том, что он очистил загрузочный сектор от диска в моей тестовой системе
def WipeDisk(Drive, WipeSpec, Passes):
DiskSize = int(System.HDD[Drive].Size)
DiskSect = int(System.HDD[Drive].Sectors())
SectSize = int(System.HDD[Drive].SectSz)
System.HDD[Drive].Start = time.time()
if (WipeSpec == "Zero"):
with open("/dev/zero", "rb") as Zero:
ZeroBlock = Zero.read(SectSize)
Zero.close()
Pass = 0
with open(System.HDD[Drive].Device, "wb") as Disk:
while (Pass < Passes):
Current = 1
while (Current < DiskSect):
if (Disk.write(ZeroBlock)):
if (Current %((DiskSect*Passes)/100) == 0):
(variable updates)
if (Current == DiskSect):
Pass = (Pass+1)
else:
System.HDD[Drive].Error = 1
Pass = Passes
break
Current = (Current+1)
if (Pass == Passes):
System.HDD[Drive].Current = Current
System.HDD[Drive].Percent = "100"
System.HDD[Drive].Complete = 1
Disk.close()
else:
print("Unknown Wipe Specification: "+WipeSpec)
1 ответ
Решение
Документация для file.write
говорит:
Запишите строку в файл. Нет возвращаемого значения.
Вы, кажется, неправильно предполагаете, что write
возвращает некоторое значение, указывающее, была ли запись успешной. Это не так.