Dun*_*ait 9 python binary large-files
假设我有一个12GB的二进制文件,我想从中间切出8GB.我知道我想要切入的位置指数.
我该怎么做呢?显然12GB不适合内存,这很好,但8GB也不会......我认为这很好,但如果你以大块的形式出现二进制似乎并不喜欢它!我一次向一个新的二进制文件追加10MB,并且新文件中每个10MB块的边缘都有不连续性.
是否有一种Pythonic方式可以轻松完成此操作?
这是一个简单的例子.根据需要进行调整:
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)
Run Code Online (Sandbox Code Playgroud)