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

Dun*_*ait 9 python binary large-files

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

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

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

Mar*_*nen 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)
Run Code Online (Sandbox Code Playgroud)