Форум сайта python.su
0
Здравствуйте ,форумчане! Мне нужна помощь!
Имею 2 бинарных файла . К примеру,я открыл их в WinHex ,и в одном файле у меня код “ FF D8 FF”, а в другом “A1 B7 DD”. мне нужно,чтобы python сравнил их и разницу из второго файла кинул в новый документ. Т.е по моему примеру выйдет “”A1 B7 DD“. Если же будет похожий код, например в 1 файле ”DD АА D8“ ,а во втором файле ”DD AA D8 FF“, то должно вывести ”FF". В инете не нашел нужную инфу, да и + новичек в питоне
Помогите написать код!
Отредактировано Geleosgeleos (Май 9, 2017 13:15:20)
Офлайн
0
нахимичил и попробовал сам написать:
Получилось так:
import struct
file1=open('d:\\22.jpg','wb')
file2=open('d:\\11.jpg','wb')
file1.write(struct.pack('x'))
file2.write(struct.pack('x'))
diff = difflib.ndiff(file1.readlines(), file2.readlines())
delta = ‘'.join(x for x in diff if x.startswith(’+ ‘))
f = open(’3.txt','w')
f.write(delta)
но ,во-первых, в строке“”“ file.write(struct.pack('x')) ”“” я не знаю,что написать,чтобы весь 16-ричный код вписало ,а не побайтово(ведь там может быть огромный 16-ричный код ,если открыть через WinHex) ( https://docs.python.org/3/library/struct.html , тема 7.1.2.2. Format Characters)
и во-вторых, у меня ругается питон на сам код((
Отредактировано Geleosgeleos (Май 9, 2017 19:28:32)
Офлайн
857
GeleosgeleosА зачем тебе это надо? Ты взялся за задачу, которая для тебя неподъёмная. Так ещё и неясно, где это может понадобиться. Скорее всего, то, что ты пытаешься сделать, делается вообще по-другому.
Имею 2 бинарных файла . К примеру,я открыл их в WinHex ,и в одном файле у меня код “ FF D8 FF”, а в другом “A1 B7 DD”. мне нужно,чтобы python сравнил их и разницу из второго файла кинул в новый документ.
Офлайн
0
Такое задание мне дал препод в целях изучения питона. Правда я тоже не знаю,в чем его смысл
Офлайн
857
Напиши тогда задание точно.
Офлайн
221
либо задание точно, либо менять препода
Офлайн
0
В общем нашел верное решение :
file1 = r"d:\\22.jpg" file2 = r"d:\\11.jpg" with open(file1, 'br') as of1, open(file2, 'br') as of2: l1 = of1.read() l2 = of2.read() f1_f2 = set(enumerate(l1)) - set(enumerate(l2)) f2_f1 = set(enumerate(l2)) - set(enumerate(l1)) for offset, char in sorted(f1_f2, key=lambda x: x[0]): print("offset: {}\tchar: {:X}".format(offset, char)) print() for offset, char in sorted(f2_f1, key=lambda x: x[0]): print("offset: {}\tchar: {:X}".format(offset, char))
c = open('3.txt') c.write("offset: {}\tchar: {:X}".format(offset, char))
Офлайн
Geleosgeleoshttps://pythonworld.ru/tipy-dannyx-v-python/fajly-rabota-s-fajlami.html
c = open('3.txt')
Офлайн