假设我有一个12GB的二进制文件,我想从中间切出8GB。我知道我想要切入的位置指数。
我该怎么做?显然12GB不适合内存,这很好,但8GB也不会......我认为这很好,但如果你以块的形式出现二进制似乎不喜欢它!我一次向一个新的二进制文件追加10MB,并且新文件中每个10MB块的边缘都有不连续性。
是否有一种Pythonic方式可以轻松完成此操作?
答案 0 :(得分:8)
这是一个简单的例子。根据需要进行调整:
def copypart(src,dest,start,length,bufsize=1024*1024):
with open(src,'rb') as f1:
f1.seek(start)
with open(dest,'wb') as f2:
while length:
chunk = min(bufsize,length)
data = f1.read(chunk)
f2.write(data)
length -= chunk
if __name__ == '__main__':
GIG = 2**30
copypart('test.bin','test2.bin',1*GIG,8*GIG)