Hallo an alle.
Ich habe es mit Binärfiles zu tun, die jeweils ein Jpg-Bild enthalten. Jpg-Bilder beginnen bekanntlich mit der Signatur (Bytefolge) 0xFF 0xD8 0xFF 0xE0, wodurch sie von den meisten Viewern als Jpg-Bild "erkannt" werden.
Bei meinen Binärfiles befinden sich vor dem eigentlichen Jpg-Bild jedoch noch weitere Informationen, sodass die Signatur nicht am Anfang der Datei steht, sondern irgendwo unter den ersten 1000 Bytes. Das Jpg-Bild beginnt also erst an der dortigen Stelle (in jedem Binärfiles an unterschiedlicher Stelle).
Wie kann ich die Binärfiles nach der Bytefolge (o. a. Signatur) durchsuchen und mir den Offset, an dem sie steht, zurückgeben lassen.
Danke für eure Hilfe
Tom
Bytefolgen in Binärdateien suchen
Mal grob skizziert:
Code: Alles auswählen
magic = b'\xff\xd8\xff\xe0'
with open('file.bin', 'rb') as binfile:
chunk = binfile.read(1000)
start = chunk.index(magic) + len(magic)
Bingo! Genau das habe ich gesucht. Und genial schlanker Code! Vielen Dank für die schnelle Antwort.
Vielleicht hast Du mir noch einen Tipp, wie ich das Binärfile dann z. B. ab Offset 27 bis zum File-Ende einlese... bzw. ab Offset 27 bis zum File-Ende in ein neues (Jpg-)File schreibe. Kann ich das mit einem Slice lösen oder gehen Slices nur bei Strings?
Besten Dank schon mal
Tom
Vielleicht hast Du mir noch einen Tipp, wie ich das Binärfile dann z. B. ab Offset 27 bis zum File-Ende einlese... bzw. ab Offset 27 bis zum File-Ende in ein neues (Jpg-)File schreibe. Kann ich das mit einem Slice lösen oder gehen Slices nur bei Strings?
Besten Dank schon mal
Tom