2016-07-18 3 views
-1

거대한 데이터 파일에서 X 바이트의 정보를 복사하여 새 파일에 붙여 넣으려고합니다. f.readline()과 f.tell()을 사용하여 X와 Y를 얻었습니다. 아래 코드를 수행하는 더 빠른 방법이 있습니까?f.read가없는 정보를 복사하여 붙여 넣으시겠습니까?

import os 
a = 300 # Beginning Byte Location 
b = 208000 # Ending Byte Location 

def file_split(x,y): 
    g = open('C:/small_file.dat', 'wb') 

    with open('C:/huge_data_file.dat', 'rb') as f: 
     f.seek(x, os.SEEK_SET) # Sets file pointer to x 
     line = '-1' 
     while (line != '') # line = '' would indicate EOF 
      while (f.tell() < y): 
       g.write(f.read(1))   
    g.close() 

file_split(a,b) 

답변

0

1 바이트보다 큰 블록 크기로 시작할 수 있습니까? 메가 바이트 단위의 데이터가 될 수 없다면 g.write (f.read (b-a))로 가면 루프가 필요하지 않습니다. 메가 바이트가 될 경우 마지막 블록이 b를 초과하지 않도록 짧게 블록 단위로 수행해야 할 수 있습니다.

관련 문제