Python: разрезание очень большого двоичного файла

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

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

Существует ли Pythonic способ сделать это легко?

9
задан Jon Seigel 19 March 2010 в 15:47
поделиться

1 ответ

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

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
ответ дан 4 December 2019 в 22:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: