2017-10-15 211 views
1

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

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

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

回答

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)