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

11 投票
1 回答
6044 浏览
提问于 2025-04-15 19:54

假设我有一个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)

撰写回答