python“file write()”方法是否保证数据已正确写入?

2024-09-30 04:27:47 发布

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

我是python新手,正在编写脚本来修补文件,例如:

def getPatchDatas(file):
  f = open(file,"rb")
  datas = f.read()
  f.close()
  return datas

f = open("myfile.bin","r+b")
f.seek(0xC020)
f.write(getPatchDatas("mypatch.bin"))
f.close()

我想确定修补程序是否正确应用。 那么,如果没有出现错误/异常,是否意味着我100%确定补丁已经正确编写?你知道吗

或者最好再检查一下:

f = open("myfile.bin","rb")
f.seek(0xC020)
if not f.read(0x20) == getPatchDatas("mypatch.bin"):
  print "Patch not applied correctly!"
f.close()

什么?? 谢谢。你知道吗


Tags: 文件脚本closereadbinnotseekopen
2条回答

在单个过程中,它是。你知道吗

在多进程中(例如,一个进程是写入,另一个进程是读取)。即使您确保它只在调用“write”之后读取,“write”也需要一些时间来完成),您可能需要一个filelock。你知道吗

不,没有,但大体上是的。这取决于它有多重要。你知道吗

任何事情都有可能出错——它可能是一个消费类硬盘,它向操作系统谎报数据写入磁盘的时间。它可能在内存中损坏,并且损坏的版本被写入磁盘,或者在写入过程中由于电气或物理问题在磁盘内部损坏。你知道吗

它可以被Linux上的内核模块、Windows上的过滤器驱动程序或FUSE文件系统提供程序截获,后者实际上不支持编写,但假装支持,这意味着什么也没写。你知道吗

它可能会被一个损坏的Python安装搞砸,其中异常不起作用,或者被故意从中破解,或者文件对象被monkeypatched,或者意外地在一个不常见的Python实现中运行,该实现伪造了支持文件,但在其他方面是相同的。你知道吗

这些原因就是为什么服务器具有对温度和电气变化具有更高容忍度的服务器级硬件、错误检查和更正内存(ECC)、RAID控制器电池备份、ZFS校验和文件系统、不间断电源等等。你知道吗

但是,就正常人和低风险的事情而言——如果写得没有错误,就和写得一样好。反复检查是有意义的-尤其是因为它很容易。很高兴知道有什么东西失败了。你知道吗

相关问题 更多 >

    热门问题