Binärdatei lesen in Python
-
Lesen einer Binärdatei mit der Funktion
open()
in Python -
Lesen einer Binärdatei mit
pathlib.Path
in Python -
Lesen einer Binärdatei mit der Funktion
numpy.fromfile()
in Python
Das Programm oder der interne Prozessor interpretiert eine Binärdatei. Sie enthält als Inhalt die Bytes. Wenn wir eine Binärdatei lesen, wird ein Objekt vom Typ bytes
zurückgegeben.
Lesen einer Binärdatei mit der Funktion open()
in Python
In Python gibt es die Funktion open()
, mit der ein Dateiobjekt erstellt wird, indem der Pfad an die Funktion übergeben wird und eine Datei in einem bestimmten Modus geöffnet wird, standardmäßig im Lesemodus. Wenn wir Binärdateien öffnen, müssen wir den Parameter b
angeben, wenn wir solche Dateien im Lese-, Schreib- oder Anhängsmodus öffnen. In diesem Lernprogramm werden wir uns mit dem binären Lesemodus - rb
- beschäftigen.
Im folgenden Code werden wir eine Binärdatei lesen und ein Zeichen aus der Datei ausgeben:
with open("sample.bin", "rb") as f:
data = f.read()
print(data[2])
Ausgabe:
83
Wenn wir einzelne Zeichen ausgeben, können wir die ganzen Zahlen betrachten.
Python hat ein Paket namens struct
, das viele Methoden hat und zum Umgang mit binären Daten, die in Dateien, Datenbanken und anderen Ressourcen gespeichert sind, verwendet werden kann.
Die Methode struct.unpack()
wird verwendet, um gepackte Daten in einem bestimmten Format-Layout zu lesen. Dieses Layout, das beim Packen und Entpacken von Daten verwendet wird, wird durch Formatzeichen angegeben. Diese Formatzeichen werden zusammen mit ihrer Größe im Folgenden dargestellt:
Beachten Sie, dass die Funktion struct.unpack()
immer ein Tupel zurückgibt.
import struct
with open("sample.bin", "rb") as f:
data = f.read()
unpack_result = struct.unpack("hhl", data[0:8])
print(unpack_result)
Ausgabe:
(1280, 27731, 7037801)
Hier gibt hhl
als Datenformat-Layout short, short und long int an, wie wir in der Ausgabe sehen können. Deshalb ist der Puffer zum Entpacken nur 8 Byte groß, da die Größe des Format-Layouts 8(2+2+4) ist.
Lesen einer Binärdatei mit pathlib.Path
in Python
Wir können auch die Methode read_bytes()
aus der Klasse Path
in der Bibliothek pathlib
verwenden, um eine Datei im Byte-Modus zu lesen und dann die Daten mit der Funktion struct.unpack()
zu interpretieren, wie zuvor gezeigt:
from pathlib import Path
import struct
data = Path("sample.bin").read_bytes()
multiple = struct.unpack("ii", data[:8])
print(multiple)
Ausgabe:
(1817380096, 7037801)
Lesen einer Binärdatei mit der Funktion numpy.fromfile()
in Python
Ein weiterer interessanter Ansatz ist im Modul NumPy
enthalten. Mit der Funktion fromfile()
in diesem Modul können wir binäre Daten aus Dateien lesen, nachdem wir die Formatdaten mit der Funktion dtype()
angegeben haben. Dies gilt als eine schnelle Methode. Der folgende Code zeigt, wie man dies implementiert:
import numpy as np
with open("sample.bin") as f:
rectype = np.dtype(np.int32)
bdata = np.fromfile(f, dtype=rectype)
print(bdata)
Ausgabe:
[1817380096 7037801]
Hier geben wir den Formattyp als Integer-32 Bit an und extrahieren die Daten mit der Funktion fromfile()
.
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedInVerwandter Artikel - Python File
- So erhalten Sie alle Dateien eines Verzeichnisses
- Wie man in Python Text an eine Datei anhängt
- Wie man prüft, ob eine Datei in Python existiert
- Wie man Dateien mit einer bestimmten Endung nur in Python findet
- Wie man bestimmte Zeilen aus einer Datei in Python liest
- Dateiberechtigungen in Python ändern