Daten in Array einlesen aus Binärdatei

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Aramis
User
Beiträge: 17
Registriert: Dienstag 29. Mai 2018, 09:41

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
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

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].
When we say computer, we mean the electronic computer.
Aramis
User
Beiträge: 17
Registriert: Dienstag 29. Mai 2018, 09:41

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. ...
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

@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?
Benutzeravatar
DeaD_EyE
User
Beiträge: 1017
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

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.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Antworten