我有几个大的二进制文件,10+ GB,有一个可变长度的标头。我想删除标题并重写没有它的文件。我当前的解决方案是接收文件的一大块并查找标头的末尾,然后截断信息,将其写入文件,然后读取和写入文件的其余部分。这工作在一个小的测试文件上但是在执行实际的工作文件时需要非常长的时间,实际上第一个测试用例仍然在这篇文章的时候运行。有没有更有效的方法来处理这个简单的任务?
filename="input_with_header.bin"
chunksize=2048
found=False
i=0
with open(filename, "rb") as f:
outputF=open("headerless.bin",'wb')
chunk = f.read(chunksize)
while not found:
if chunk[i:i+12] == b'HEADER_END\r\n':
found=True
i+=12
chunk=chunk[i:]
else:
i+=1
outputF.write(chunk)
while True:
chunk = f.read(chunksize)
if not chunk:
break
outputF.write(chunk)
outputF.flush()
outputF.close()