Seite 1 von 1

Daten in Array einlesen aus Binärdatei

Verfasst: Dienstag 29. Mai 2018, 10:20
von Aramis
Hallo zusammen,

ich beschäftige mich gerade mit der git Versionsverwaltung. git packt "lose Objekte" in eine .idx Datei (single binary file called packfile) zusammen. Ich möchte nun die dort gespeicherten Objektnamen in ein Array speichern, um diese dann im nächsten Schritt einzeln aufrufen und auslesen zu können. Für mich erstmal nur interessant sind die ersten beiden Spalten in der .idx Datei.

jetzt hänge ich aber beim Auslesen der .idx Datei - folgender Code funktioniert nicht.

Code: Alles auswählen

def idx_read():
    data = array()
    file = open("pack-878890534537.idx","rb")
    for line in file:
        line = line.strip()
        line_list = line.split("\n")
        data.append(line_list)
        print (data)
    file.close()
wenn ich

Code: Alles auswählen

data = list()
statt

Code: Alles auswählen

data = array()
verwende, dann hab ich die Daten in data. Allerdings benötige ich nur die ersten beiden Spalte und es stehen HEX Werte drin. ...? An Auslesen ist da noch garnicht zu denken. ... Ich komm hier leider nicht allein weiter. ...

Vielen Grüße, Aramis

Re: Daten in Array einlesen aus Binärdatei

Verfasst: Dienstag 29. Mai 2018, 10:31
von sls
Zum einlesen der Datei solltest du das with-Statement verwenden. Die HEX-Werte sind logisch, da du die Datei Binär einliest -> 'rb' als Mode bedeutet read binary. Möchtest du nur die ersten beiden Zeilen, oder die ersten beiden Einträge einer jeden Zeile? letzteres ginge dann mit data[0] / data[1].

Re: Daten in Array einlesen aus Binärdatei

Verfasst: Dienstag 29. Mai 2018, 10:49
von Aramis
ich benötige die ersten beiden Einträge pro Zeile.
sorry, aber ich glaub ich steh aufm Schlauch. ... wo kommt data[0] / data[1] hin. die Zuweisung wäre dann

Code: Alles auswählen

data = list()
usw. ?
es muss in der for-Schleife stehen um das Array zu füllen. ...

Re: Daten in Array einlesen aus Binärdatei

Verfasst: Dienstag 29. Mai 2018, 11:06
von kbr
@Aramis: Ein Array ist kein buildin-Datatype von Python, sondern kommt wenn, dann aus Libraries. Was ist Dein array für ein Datentyp? Weiter liest Du aus der Datei, als wäre es eine Texdatei. Du hast diese aber im binär-Modus geöffnet. Ist dies nun eine binär-Datei oder nicht?

Re: Daten in Array einlesen aus Binärdatei

Verfasst: Mittwoch 30. Mai 2018, 15:15
von DeaD_EyE
Ich habe mal so eine Datei aufgemacht. Es ist irgendein Binärformat, welches du vorher parsen müsstest. Dazu müsstest du erstmal das Format kennen und dann kannst du das implementieren.
Vielleicht gibt es sowas ja sogar schon als Modul. Da es eh OpenSource ist, ist es auch keine Schwierigkeit an die Spezifikation heran zu kommen.

C-Datentypen können mit dem Modul struct aus der stdlib von Python eingelesen bzw. konvertiert werden.