假设我有一个 12GB 的二进制文件,我想从它的中间切出 8GB。我知道我想在其间切割的位置索引。
我该怎么做?显然 12GB 不适合内存,这很好,但 8GB 也不会......我认为这很好,但如果你分 block 做,二进制似乎不喜欢它!我一次将 10MB 附加到一个新的二进制文件中,但新文件中每个 10MB block 的边缘都有不连续点。
是否有一种 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)
关于Python:切片一个非常大的二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2363483/