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