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 возвращает некоторое значение, указывающее, была ли запись успешной. Это не так.

Другие вопросы по тегам