如何在Python中复制二进制文件的块?

时间:2017-10-15 12:23:50

标签: python file buffer binaryfiles

我有一个很大的二进制文件(60GB),我想分成几个较小的文件。我遍历文件并找到了我想用fileObject.tell()方法拆分文件的点,所以现在我有一个名为file_pointers的1000个拆分点数组。我正在寻找一种从这些分割点创建文件的方法,所以函数看起来像:

def split_file(file_object, file_pointers):
     # Do something here

它将为每个块创建文件。我看到了这个question,但我担心Python的循环可能太慢了,而且我觉得必须有某种类似的内置函数。

1 个答案:

答案 0 :(得分:0)

这比我想象的要简单得多,但我会在这里发布我的答案以防万一有人想要快速解决方案。以下是从file_pointer[1]复制到file_pointer[2]

的示例
with open('train_example.bson', 'rb') as fbson:
    fbson.seek(file_pointers[1])
    bytes_chunk = fbson.read(file_pointers[2] - file_pointers[1])
    with open('tmp.bson', 'wb') as output_file:
        output_file.write(bytes_chunk)