2016-07-18 11 views
-1

Ich versuche, Informationen von Byte X zu Y aus einer großen Datendatei in eine neue Datei zu kopieren und einzufügen. Ich habe X und Y mit f.readline() und f.tell(). Gibt es einen schnelleren Weg, dies zu tun, dann den Code unten.Kopieren & Einfügen von Informationen ohne 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) 

Antwort

0

Sie könnten mit einer größeren Blockgröße als 1 Byte beginnen? Wenn es nie Daten im Megabyte-Bereich geben wird, gehen Sie einfach auf g.write (f.read (b-a)) und Sie sind fertig, keine Notwendigkeit für die Schleife. Wenn es sich um Megabyte handelt, sollten Sie Block für Block vorgehen und sicherstellen, dass der letzte Block kürzer ist als b.

Verwandte Themen