сегментирование и запись двоичного файла с использованием Python

У меня есть два двоичных входных файла, первый файл и второй файл . второй файл - это первый файл + дополнительный материал. Я хочу выделить этот дополнительный материал в отдельный файл, newfile . Вот что у меня есть на данный момент:

import os
import struct

origbytes = os.path.getsize(firstfile)
fullbytes = os.path.getsize(secondfile)
numbytes = fullbytes-origbytes

with open(secondfile,'rb') as f:
    first = f.read(origbytes)
    rest = f.read()

Естественно, я склонен сделать (что, кажется, работает):

with open(newfile,'wb') as f:
    f.write(rest)

Я не могу найти это, но подумал, что прочитал на SO, что я должен сначала упаковать это, используя struct.pack перед записью в файл. Следующее дает мне ошибку:

with open(newfile,'wb') as f:
    f.write(struct.pack('%%%ds' % numbytes,rest))

-----> error: bad char in struct format

Это работает, однако:

with open(newfile,'wb') as f:
    f.write(struct.pack('c'*numbytes,*rest))

И для тех, которые работают, это дает мне правильный ответ

with open(newfile,'rb') as f:
    test = f.read()

len(test)==numbytes

-----> True

Это правильный способ записи двоичного файла? Я просто хочу убедиться, что я делаю эту часть правильно, чтобы диагностировать, не повреждена ли вторая часть файла, поскольку другая программа чтения, которой я скармливаю newfile , сообщает мне, или я делаю это неправильно. Спасибо.

0
задан hatmatrix 18 November 2011 в 23:04
поделиться