Python io – BytesIO, StringIO

Mit dem Python io Modul können wir die dateibezogenen Ein- und Ausgabeoperationen verwalten. Der Vorteil der Verwendung des IO-Moduls ist, dass die verfügbaren Klassen und Funktionen uns erlauben, die Funktionalität zu erweitern, um das Schreiben in die Unicode-Daten zu ermöglichen.

Python IO-Modul

Es gibt viele Möglichkeiten, wie wir das io-Modul verwenden können, um Stream- und Puffer-Operationen in Python durchzuführen. Wir werden hier eine Reihe von Beispielen zeigen, um das zu beweisen. Fangen wir an.

Python BytesIO

Gleich dem, was wir mit Variablen machen, können Daten als Bytes in einem speicherinternen Puffer gehalten werden, wenn wir die Byte-IO-Operationen des io-Moduls verwenden.

Hier ist ein Beispielprogramm, um dies zu demonstrieren:

import iostream_str = io.BytesIO(b"JournalDev Python: \x00\x01")print(stream_str.getvalue())

Lassen Sie uns die Ausgabe für dieses Programm sehen:
python IO BytesIO Beispiel
Die getvalue() Funktion nimmt einfach den Wert aus dem Buffer als String.

Python StringIO

Wir können auch StringIO verwenden, das in der Anwendung dem BytesIO sehr ähnlich ist. Hier ist ein Beispielprogramm:

import iodata = io.StringIO()data.write('JournalDev: ')print('Python.', file=data)print(data.getvalue())data.close()

Lassen Sie uns die Ausgabe für dieses Programm sehen:
python StringIO Beispiel
Beachten Sie, dass wir sogar den Puffer geschlossen haben, nachdem wir mit dem Puffer fertig sind. Das hilft, Puffer-Speicher zu sparen, da sie Daten im Speicher ablegen.

Außerdem haben wir die print-Methode mit einem optionalen Argument verwendet, um einen IO-Stream der Variablen anzugeben, was perfekt mit einer print-Anweisung kompatibel ist.

Lesen mit StringIO

Wenn wir einmal Daten in den StringIO-Puffer geschrieben haben, können wir sie auch lesen. Schauen wir uns einen Codeschnipsel an:

import ioinput = io.StringIO('This goes into the read buffer.')print(input.read())

Lassen Sie uns die Ausgabe für dieses Programm sehen:
python io module read stringIO data

Datei lesen mit StringIO

Es ist auch möglich, eine Datei zu lesen und sie als Bytes über ein Netzwerk zu streamen. Das io-Modul kann verwendet werden, um eine Mediendatei wie ein Bild in Bytes zu konvertieren. Hier ist ein Beispielprogramm:

import iofile = io.open("whale.png", "rb", buffering = 0)print(file.read())

Lassen Sie uns die Ausgabe für dieses Programm sehen:

Für die Ausführung dieses Programms mussten wir ein Bild „whale.png“ in unserem aktuellen Verzeichnis haben.

io.open() vs os.open()

Die io.open()Funktion ist die bevorzugte Methode, um E/A-Operationen auszuführen, da sie als High-Level-Schnittstelle zur Durchführung von Datei-E/A gedacht ist. Sie wickelt den OS-Level-Dateideskriptor in ein Objekt ein, das wir verwenden können, um auf die Datei auf Pythonische Weise zuzugreifen.

Die os.open() Funktion kümmert sich um den POSIX-Syscall auf niedrigerer Ebene. Sie nimmt POSIX-basierte Eingangsargumente entgegen und gibt einen Dateideskriptor zurück, der die geöffnete Datei repräsentiert. Sie gibt kein Dateiobjekt zurück; der zurückgegebene Wert hat keine read() oder write() Funktionen.

Gesamt ist die io.open() Funktion nur ein Wrapper über der os.open() Funktion. Die os.open()-Funktion setzt lediglich auch die Standardkonfiguration wie Flags und Modus, während io.open() dies nicht tut und von den übergebenen Werten abhängt.

Abschluss

In dieser Lektion haben wir uns mit einfachen Operationen des Python-IO-Moduls beschäftigt und gelernt, wie wir auch die Unicode-Zeichen mit BytesIO verwalten können. Wenn Sie jedoch komplette Dateioperationen wie das Löschen und Kopieren einer Datei suchen, dann lesen Sie python read file.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.