Seite 1 von 1

Byte-Daten in ein Array einlesen.

Verfasst: Samstag 28. Januar 2023, 12:03
von funkheld
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()

Re: Byte-Daten in ein Array einlesen.

Verfasst: Samstag 28. Januar 2023, 19:00
von __blackjack__
@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.

Re: Byte-Daten in ein Array einlesen.

Verfasst: Samstag 28. Januar 2023, 19:25
von funkheld
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()

Re: Byte-Daten in ein Array einlesen.

Verfasst: Samstag 28. Januar 2023, 19:41
von __blackjack__
@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.

Re: Byte-Daten in ein Array einlesen.

Verfasst: Samstag 28. Januar 2023, 23:00
von Sirius3
@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?

Re: Byte-Daten in ein Array einlesen.

Verfasst: Sonntag 29. Januar 2023, 00:20
von sparrow
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 🙂

Re: Byte-Daten in ein Array einlesen.

Verfasst: Sonntag 29. Januar 2023, 18:22
von DeaD_EyE

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`.