Python向/dev/sda写入一个512byte的零块是可行的,但是它的行为不像是在工作

2024-09-28 05:26:13 发布

您现在位置:Python中文网/ 问答频道 /正文

在这里,我尝试创建一个函数来(最终)支持使用多种规格的驱动器擦除。我遇到的问题是,当我试图将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)

Tags: ifpassdrivecurrentsystemint驱动器disk
1条回答
网友
1楼 · 发布于 2024-09-28 05:26:13

The documentationfor file.write表示:

Write a string to the file. There is no return value.

假定write返回某个值来指示写入是否成功,这似乎是错误的。不是的

相关问题 更多 >

    热门问题