[python-users] Binärdaten in Python einlesen

M.-A. Lemburg mal at egenix.com
So Jun 7 22:50:31 CEST 2015


On 07.06.2015 19:11, Jonas Stein wrote:
> Hallo allerseits,
> 
> ich möchte Dateien mit 10 - 500 MB Binärdaten in Python einlesen und
> auswerten.
> 
> Die Daten haben eine Baumartige Struktur:
> 
> Headerdaten   (unbekannte Länge)
> Headerseparator (Bitmuster '0x00005555AAAAFFFF')
> Datenheader   (40 Byte)
> Datenblock 1a (6 Byte)
> Datenblock 1b (6 Byte)
> Datenblock 1c (6 Byte)
> Datenblockende 1 (Bitmuster '0x0000FFFF5555AAAA')
> Datenheader   (40 Byte)
> Datenblock 2a (6 Byte)
> Datenblock 2b (6 Byte)
> Datenblockende 2 (Bitmuster '0x0000FFFF5555AAAA')
> Datenheader   (40 Byte)
> Datenblock n  (6 Byte)
> Datenblockende n (Bitmuster '0x0000FFFF5555AAAA')
> Dateiende (Bitmuster '0xFFFFAAAA55550000')
> 
> Die Datenblöcke haben eine fixe Länge, aber ich weiß vorher nie
> wieviele kommen.
> 
> Welcher Weg eigenet sich unter Python besonders dazu?
> Alleine zum Einlesen von Binärdaten wurde ich erschlagen von
> unzähligen fertigen und halbfertigen Lösungen und habe den Überblick
> verloren.
> 
> Macht es Sinn, die Positionen aller Bitmuster ausfindig machen und mit
> numpy und dtype einzulesen, oder gibt es etwas eleganteres?

Das sieht nach einer Aufgabe für das struct Modul aus.

Du könntest allerdings auch die ganze Sache in ASN.1 definieren:

http://en.wikipedia.org/wiki/Abstract_Syntax_Notation_One

und dann mittels

http://pyasn1.sourceforge.net/

einlesen, oder, da die Struktur doch recht einfach ist, mit
diesem hier:

http://www.getreu.net/public/downloads/software/ASN1_decoder/

Beste Grüße,
-- 
Marc-Andre Lemburg
eGenix.com

Professional Python Services directly from the Source  (#1, Jun 07 2015)
>>> Python Projects, Coaching and Consulting ...  http://www.egenix.com/
>>> mxODBC Plone/Zope Database Adapter ...       http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ...        http://python.egenix.com/
________________________________________________________________________

::::: Try our mxODBC.Connect Python Database Interface for free ! ::::::

   eGenix.com Software, Skills and Services GmbH  Pastor-Loeh-Str.48
    D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
           Registered at Amtsgericht Duesseldorf: HRB 46611
               http://www.egenix.com/company/contact/



Mehr Informationen über die Mailingliste python-users