Byte-Daten in ein Array einlesen.

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
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

Hallo, guten tag,

Wie kann man bitte Byte-Daten in ein Array einlesen?

-------------------------
arraytyp = ctypes.c_int * 10
a = arraytyp()
f = open("d:/python39/programme-py/daten/255_daten.bin",'rb')
??? = f.read(10)
f.close()
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@funkheld: Warum ``read(10)``? Das geht doch überhaupt nicht auf. Falls das eigentlich 40 oder 80 sein sollte, je nach dem was `c_int` konkret bedeutet, dann haben Dateiobjekte eine `readinto()`-Methode, die man hier nutzen könnte.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

So könnte ich es ja auch schreiben.

laenge=os.path.getsize("d:/python39/programme-py/daten/255_daten.bin",'rb')
f = open("d:/python39/programme-py/daten/255_daten.bin",'rb')
s = f.read(laenge)
f.close()
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@funkheld: Falls Du ein nicht-funktionierendes Programm haben willst, welches gleich bei der ersten Zeile einen `TypeError` auslöst, kannst Du das auch so schreiben. Nicht dass das irgendwie sinnvoll wäre die Dateigrösse vorher zu ermitteln wenn man die Datei komplett einlesen will, aber machen kann man das natürlich.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@funkheld: Dateinamen schreibt man nicht mehrfach in den Programmcode. Falls sich der mal ändert, muss man erst alle Stellen finden. Statt dessen wird eine Konstante mit den Dateiname definiert.
Dateien öffnet man innerhalb eines with-Statements.
Warum benutzt Du ctypes? Zum Lesen von Binärdaten würde ich das struct-Modul verwenden. Was willst Du mit den Daten weiter machen?
Benutzeravatar
sparrow
User
Beiträge: 4165
Registriert: Freitag 17. April 2009, 10:28

Ich persönlich finde es ein bisschen erheiternd, dass exakt diese Fragestellungen vor rund 13 Jahren schon einmal gestellt wurden und die Antworten zu den aktuellen Themen merklich deckungsgleich sind.

Ich wollte das nur kurz anmerken 🙂
Benutzeravatar
DeaD_EyE
User
Beiträge: 1012
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Code: Alles auswählen

buffer = array.array("B")

with open("d:/python39/programme-py/daten/255_daten.bin", "rb") as fd:
    buffer.fromfile(fd, 256)
https://docs.python.org/3/library/array.html

PS: `fd.readinto` funktioniert nicht mit einem leeren `array` oder `bytearray`.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Antworten