2017-10-15 2 views
1

큰 바이너리 파일 (60GB)을 몇 개 더 작게 나누고 싶습니다. 파일을 반복하고 fileObject.tell() 메서드를 사용하여 파일을 분할 할 지점을 찾았으므로 이제 file_pointers이라는 1000 개의 분할 점 배열이 있습니다. 그 분할 점에서 파일을 생성하는 방법을 찾고 있습니다. 따라서 함수는 다음과 같이 보일 것입니다 :파이썬에서 바이너리 파일의 덩어리를 어떻게 복사합니까?

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

그리고 모든 청크에 대해 파일을 생성합니다. 이 question을 보았지만 파이썬의 루핑이 너무 느릴 까봐 두려웠습니다. 비슷한 종류의 빌트인 함수가 있어야만합니다.

답변

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) 
관련 문제