Python:切割一个非常大的二进制文件

时间:2010-03-02 13:47:17

标签: python binary large-files

假设我有一个12GB的二进制文件,我想从中间切出8GB。我知道我想要切入的位置指数。

我该怎么做?显然12GB不适合内存,这很好,但8GB也不会......我认为这很好,但如果你以块的形式出现二进制似乎不喜欢它!我一次向一个新的二进制文件追加10MB,并且新文件中每个10MB块的边缘都有不连续性。

是否有一种Pythonic方式可以轻松完成此操作?

1 个答案:

答案 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)