Python IO – BytesIO und StringIO

Das Python io Modul ermöglicht es uns, die Datei-bezogenen Ein- und Ausgabeoperationen zu verwalten. Der Vorteil der Verwendung des IO Moduls besteht darin, dass die verfügbaren Klassen und Funktionen es uns ermöglichen, die Funktionalität zu erweitern, um das Schreiben in Unicode-Daten zu ermöglichen.

Python IO Modul

Es gibt viele Möglichkeiten, wie wir das io Modul verwenden können, um Stream- und Buffer-Operationen in Python durchzuführen. Wir werden hier viele Beispiele zeigen, um den Punkt zu beweisen. Lassen Sie uns beginnen.

Python BytesIO

Genau wie bei Variablen können Daten als Bytes in einem im Speicher befindlichen Puffer gehalten werden, wenn wir die Byte IO-Operationen des io Moduls verwenden. Hier ist ein Beispielprogramm, um dies zu demonstrieren:

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

Lassen Sie uns das Output für dieses Programm sehen:

sh-3.2$ python io_bytes.py
JournalDev Python:
sh-3.2$

Die Funktion getvalue() nimmt einfach den Wert aus dem Buffer als String.

Python StringIO

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

import io

data = io.StringIO()
data.write('JournalDev: ')
print('Python.', file=data)

print(data.getvalue())

data.close()

Lassen Sie uns das Output für dieses Programm sehen:

Beachten Sie, dass wir den Buffer sogar geschlossen haben, nachdem wir mit dem Buffer fertig sind. Dies hilft, Buffer-Speicher zu sparen, da sie Daten im Speicher speichern. Außerdem haben wir die print-Methode mit einem optionalen Argument verwendet, um einen IO Stream der Variable anzugeben, der perfekt mit einer Print-Anweisung kompatibel ist.

Lesen mit StringIO

Sobald wir einige Daten in den StringIO-Buffer geschrieben haben, können wir sie auch lesen. Sehen wir uns einen Code-Schnipsel an:

import io

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

Lassen Sie uns das Output für dieses Programm sehen:

Datei lesen mit StringIO

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

import io

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

Lassen Sie uns das Output für dieses Programm sehen:

io.open() vs os.open()

Die io.open() Funktion ist eine viel bevorzugte Methode, um I/O-Operationen durchzuführen, da sie als High-Level-Schnittstelle zur Durchführung von Datei-I/O erstellt wurde. Sie umhüllt den OS-Level-Dateideskriptor in einem Objekt, das wir verwenden können, um auf die Datei auf eine Python-typische Weise zuzugreifen. Die os.open() Funktion kümmert sich um den Low-Level-POSIX-Syscall. Sie nimmt POSIX-basierte Argumente 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. Insgesamt ist die io.open() Funktion nur ein Wrapper über die os.open() Funktion. Die os.open() Funktion setzt auch Standardkonfigurationen wie Flags und Modi, während io.open() dies nicht tut und von den an sie übergebenen Werten abhängt.

Fazit

In dieser Lektion haben wir einfache Operationen des Python IO Moduls untersucht und wie wir auch Unicode-Charaktere mit BytesIO verwalten können.

Kostenlosen Account erstellen

Registrieren Sie sich jetzt und erhalten Sie Zugang zu unseren Cloud Produkten.

Das könnte Sie auch interessieren: