Siddharth Kshirsagar

Follow

1 aug, 2020 – 2 min gelezen

Foto door Robert Thiemann op Unsplash
  1. StringIO en BytesIO zijn methoden voor het manipuleren van string- en bytes-gegevens in het geheugen.
  2. StringIO wordt gebruikt voor tekenreeksgegevens en BytesIO voor binaire gegevens.
  3. Deze klassen maken bestandsachtige objecten die werken met tekenreeksgegevens.
  4. 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.

  1. De readinto() methode van bestanden kan worden gebruikt om elke vooraf toegewezen array te vullen met gegevens. Inclusief arrays gemaakt via de numpy module.
  2. In tegenstelling tot de normale read() methode vult de readinto() methode de inhoud van een bestaande buffer in plaats van nieuwe objecten toe te wijzen en deze terug te sturen.
  3. 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

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *