2017-10-15 3 views
1

大きなバイナリファイル(60GB)をいくつか小さなものに分割したいのですが。私はファイルを反復し、fileObject.tell()メソッドを使用してファイルを分割したい点を見つけました。今はfile_pointersという1000個の分割点の配列があります。私はそれらのスプリット・ポイントからファイルを作成する方法を探していますので、この関数は次のようになります。バイナリファイルのチャンクを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) 
関連する問題