У меня есть два двоичных входных файла, первый файл
и второй файл
. второй файл
- это первый файл
+ дополнительный материал. Я хочу выделить этот дополнительный материал в отдельный файл, 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
, сообщает мне, или я делаю это неправильно. Спасибо.