Python io - BytesIO, StringIO
Das Python io-Modul ermöglicht es uns, die dateibezogenen 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 von Unicode-Daten zu ermöglichen.
Python IO-Modul
Es gibt viele Möglichkeiten, wie wir das io-Modul verwenden können, um Stream- und Pufferoperationen in Python durchzuführen. Wir werden hier viele Beispiele zeigen, um den Punkt zu beweisen. Lass uns anfangen.
Python BytesIO
So wie wir es mit Variablen machen, können Daten als Bytes in einem Speicherpuffer 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())
Lass uns die Ausgabe dieses Programms sehen:
Die getvalue() Funktion nimmt einfach den Wert aus dem Puffer als String.
Python StringIO
Wir können sogar StringIO verwenden, das in der Anwendung äußerst ähnlich wie BytesIO ist. Hier ist ein Beispielprogramm:
import io
data = io.StringIO()
data.write('JournalDev: ')
print('Python.', file=data)
print(data.getvalue())
data.close()
Lass uns die Ausgabe dieses Programms sehen:
Beachten Sie, dass wir den Puffer sogar geschlossen haben, nachdem wir mit dem Puffer fertig sind. Dies hilft, den Puffer-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 Variablen anzugeben, der perfekt mit einer Print-Anweisung kompatibel ist.
Lesen mit StringIO
Sobald wir einige Daten in den StringIO-Puffer geschrieben haben, können wir sie auch lesen. Lassen Sie uns einen Codeausschnitt ansehen:
import io
input = io.StringIO('This goes into the read buffer.')
print(input.read())
Lass uns die Ausgabe dieses Programms sehen:
Datei mit StringIO lesen
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 io
file = io.open("whale.png", "rb", buffering = 0)
print(file.read())
Lass uns die Ausgabe dieses Programms sehen:
Für dieses Programm, um zu laufen, benötigten wir ein whale.png Bild in unserem aktuellen Verzeichnis.
io.open() vs os.open()
Die io.open()-Funktion ist eine wesentlich bevorzugte Methode zur Durchführung von I/O-Operationen, da sie als hochgradige Schnittstelle für Datei-I/O entwickelt wurde. Sie umschließt den betriebssystemebenen Dateideskriptor in einem Objekt, das wir verwenden können, um die Datei auf eine pythonische Weise zuzugreifen. Die os.open()-Funktion kümmert sich um den niederleveligen POSIX-Systemaufruf. Sie nimmt POSIX-basierte Eingabeargumente entgegen und gibt einen Dateideskriptor zurück, der die geöffnete Datei repräsentiert. Sie gibt kein Dateiobjekt zurück; der zurückgegebene Wert verfügt nicht über die Funktionen read() oder write(). Insgesamt ist die io.open()-Funktion nur ein Wrapper um die os.open()-Funktion. Die os.open()-Funktion legt zusätzlich auch standardmäßige Konfigurationen wie Flags und Modus fest, während io.open() das nicht tut und von den übergebenen Werten abhängt.
Schlussfolgerung
In dieser Lektion haben wir einfache Operationen des Python IO-Moduls studiert und wie wir die Unicode-Zeichen auch mit BytesIO verwalten können. Wenn Sie jedoch nach vollständigen Dateioperationen wie dem Löschen und Kopieren einer Datei suchen, lesen Sie die Python-Dateilesefunktion. Referenz: API-Dokumentation




