Siddharth Kshirsagar
Follow
1. August, 2020 – 2 min read
- StringIO und BytesIO sind Methoden, die String- und Bytes-Daten im Speicher manipulieren.
- StringIO wird für String-Daten und BytesIO für Binärdaten verwendet.
- Diese Klassen erzeugen dateiähnliche Objekte, die auf String-Daten operieren.
- Die Klassen StringIO und BytesIO sind am nützlichsten in Szenarien, in denen Sie eine normale Datei imitieren müssen.
In diesem Fall werden die Daten nicht im Speicher (RAM) gehalten, nachdem sie in die Datei geschrieben wurden
In diesem Fall wird der Inhalt nicht in eine Datei, sondern in einen Speicherpuffer geschrieben.(ein Stück Ram)
Wesentlich ist das Schreiben mit der BytesIO Klasse äquivalent zu
space = b""
space += b"Hello world"
space += b"Hello world"
space += b"Hello world"
space += b"Hello world"
space += b"Hello world"
Warum definieren wir dann io.BytesIO() und warum verwenden wir nicht die Bytes-Verkettung?
Ans: Optimierung und Performance
Gibt es einen anderen Weg, über den wir Daten in einen veränderbaren Speicherpuffer lesen können?
Ja, wir können die readinto()-Methode von file a object verwenden.
- Die
readinto()
-Methode von file kann verwendet werden, um ein beliebiges, vorab zugewiesenes Array mit Daten zu füllen. Dazu gehören auch Arrays, die mit dem Numpy-Modul erstellt wurden. - Im Gegensatz zur normalen
read()
-Methode füllt diereadinto()
-Methode den Inhalt eines vorhandenen Puffers, anstatt neue Objekte zu allozieren und zurückzugeben. - Damit können wir zusätzliche Speicherallokationen vermeiden.
Beispiele:
Sie wollen Binärdaten direkt in einen veränderbaren Puffer einlesen, ohne ein Zwischenkopieren zur Manipulation der Binärdaten