Python: découper un très grand fichier binaire

disons que j'ai un fichier binaire de 12 Go et que je veux découper 8 Go au milieu. Je connais les indices de position que je veux couper entre.

comment je fais ça? Évidemment 12 Go ne rentrera pas dans la mémoire, c'est bien, mais 8 Go non plus... Ce que je pensais être bien, mais il semble binaire ne semble pas l'aimer si vous le faites en morceaux! J'ajoutais 10 Mo à la fois à un nouveau fichier binaire et il y a des discontinuités sur les bords de chaque morceau de 10 Mo dans le nouveau fichier.

y a-t-il une façon pythonique de faire cela facilement?

9
demandé sur Jon Seigel 2010-03-02 16:47:17

1 réponses

Voici un exemple rapide. S'adapter selon les besoins:

def copypart(src,dest,start,length,bufsize=1024*1024):
    with open(src,'rb') as f1:
        f1.seek(start)
        with open(dest,'wb') as f2:
            while length:
                chunk = min(bufsize,length)
                data = f1.read(chunk)
                f2.write(data)
                length -= chunk

if __name__ == '__main__':
    GIG = 2**30
    copypart('test.bin','test2.bin',1*GIG,8*GIG)
8
répondu Mark Tolonen 2015-03-10 20:10:13