Python: 切片一个非常大的二进制文件
假设我有一个12GB的二进制文件,我想从中间切出8GB的部分。我知道我想要切割的具体位置。
我该怎么做呢?显然,12GB的文件放不进内存,这没问题,但8GB的文件也放不进去……我原以为这样也没关系,但看起来二进制文件处理起来不太喜欢这样分块!我试着每次添加10MB到一个新的二进制文件里,但在新文件的每个10MB块的边缘都有不连续的地方。
有没有什么简单的Python方法可以做到这一点呢?
1 个回答
11
这里有一个简单的例子。你可以根据需要进行调整:
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)