Python: нарезка очень большого двоичного файла - PullRequest
9 голосов
/ 02 марта 2010

Скажем, у меня есть двоичный файл 12 ГБ, и я хочу нарезать 8 ГБ из его середины. Я знаю индексы позиций, между которыми я хочу сократить.

Как мне это сделать? Очевидно, что 12 ГБ не поместятся в память, это нормально, но 8 ГБ тоже не подойдут ... Что я подумал, что это хорошо, но кажется, что двоичный файл не понравится, если вы сделаете это частями! Я добавлял 10 МБ за раз к новому двоичному файлу, и по краям каждого фрагмента по 10 МБ есть разрывы в новом файле.

Есть ли Pythonic способ сделать это легко?

1 Ответ

8 голосов
/ 02 марта 2010

Вот быстрый пример. При необходимости адаптируйте:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...