
Siddharth Kshirsagar
Follow
1 aug, 2020 – 2 min gelezen
- StringIO en BytesIO zijn methoden voor het manipuleren van string- en bytes-gegevens in het geheugen.
- StringIO wordt gebruikt voor tekenreeksgegevens en BytesIO voor binaire gegevens.
- Deze klassen maken bestandsachtige objecten die werken met tekenreeksgegevens.
- De klassen StringIO en BytesIO zijn het nuttigst in scenario’s waarin je een normaal bestand moet nabootsen.
In dit geval worden de gegevens niet in het RAM-geheugen bewaard nadat ze naar het bestand zijn geschreven
In dit geval wordt de inhoud niet naar een bestand geschreven, maar naar een buffer in het geheugen.(een brok ram)
In wezen is het schrijven met de BytesIO klasse gelijk aan
space = b""
space += b"Hello world"
space += b"Hello world"
space += b"Hello world"
space += b"Hello world"
space += b"Hello world"
Waarom definiëren we dan io.BytesIO() en waarom niet de bytesamenvoeging gebruiken?
Ans: optimalisatie en prestaties
Is er een andere manier waarop we gegevens in een buffer met veranderlijk geheugen kunnen lezen?
Ja we kunnen readinto() methode van bestand een object gebruiken.
- De
readinto()
methode van bestanden kan worden gebruikt om elke vooraf toegewezen array te vullen met gegevens. Inclusief arrays gemaakt via de numpy module. - In tegenstelling tot de normale
read()
methode vult dereadinto()
methode de inhoud van een bestaande buffer in plaats van nieuwe objecten toe te wijzen en deze terug te sturen. - Dus kunnen we het gebruiken om extra geheugentoewijzingen te vermijden.
Voorbeelden:
U wilt binaire gegevens direct in een muteerbare buffer lezen zonder tussentijds te kopiëren om de binaire gegevens te manipuleren