Python io – BytesIO, StringIO

Python io module stelt ons in staat om de bestands-gerelateerde invoer en uitvoer operaties te beheren. Het voordeel van het gebruik van de IO module is dat de beschikbare klassen en functies ons in staat stellen om de functionaliteit uit te breiden om het schrijven naar Unicode data mogelijk te maken.

Python IO Module

Er zijn vele manieren waarop we de io module kunnen gebruiken om stream en buffer operaties in Python uit te voeren. We zullen hier een heleboel voorbeelden laten zien om het punt te bewijzen. Laten we beginnen.

Python BytesIO

Net als wat we met variabelen doen, kunnen gegevens als bytes in een in-memory buffer worden bewaard wanneer we de io module’s Byte IO operaties gebruiken.

Hier is een voorbeeldprogramma om dit te demonstreren:

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

Laten we de uitvoer van dit programma eens bekijken:
python IO BytesIO voorbeeld
De getvalue() functie neemt gewoon de waarde uit de Buffer als een String.

Python StringIO

We kunnen zelfs StringIO gebruiken, die qua gebruik erg lijkt op BytesIO. Hier is een voorbeeldprogramma:

import iodata = io.StringIO()data.write('JournalDev: ')print('Python.', file=data)print(data.getvalue())data.close()

Laten we de uitvoer van dit programma eens bekijken:
python StringIO example
Merk op dat we zelfs de buffer hebben gesloten nadat we klaar zijn met de buffer. Dit helpt buffergeheugen te besparen, omdat ze gegevens in het geheugen opslaan.

Ook hebben we de print-methode gebruikt met een optioneel argument om een IO-stream van de variabele op te geven, wat perfect compatibel is met een print-instructie.

Lezen met StringIO

Als we eenmaal wat data naar de StringIO-buffer hebben geschreven, kunnen we die ook lezen. Laten we eens kijken naar een stukje code:

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

Laten we eens kijken naar de uitvoer van dit programma:
python io module lees stringIO data

Bestand lezen met StringIO

Het is ook mogelijk om een bestand te lezen en het over een netwerk te streamen als Bytes. De io-module kan worden gebruikt om een mediabestand zoals een afbeelding om te zetten naar bytes. Hier is een voorbeeld programma:

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

Laten we de uitvoer van dit programma eens bekijken:

Om dit programma te laten lopen, hadden we een afbeelding walvis.png in onze huidige directory staan.

io.open() vs os.open()

De io.open() functie is een veel geprefereerde manier om I/O operaties uit te voeren, omdat het is gemaakt als een interface op hoog niveau om bestands-I/O uit te voeren. Het verpakt de OS-level file descriptor in een object dat we kunnen gebruiken om toegang te krijgen tot het bestand op een Pythonische manier.

De os.open() functie zorgt voor de lagere-level POSIX syscall. Het neemt input POSIX-gebaseerde argumenten en retourneert een file descriptor die het geopende bestand representeert. Het retourneert geen bestandsobject; de geretourneerde waarde zal geen read() of write() functies hebben.

Over het geheel genomen is de io.open() functie slechts een wrapper over de os.open() functie. De os.open() functie stelt ook standaard instellingen in zoals vlaggen en modus, terwijl io.open() dat niet doet en afhankelijk is van de waarden die worden doorgegeven.

Conclusie

In deze les hebben we eenvoudige handelingen van de python IO module bestudeerd en hoe we de Unicode karakters ook met BytesIO kunnen beheren. Echter, als je op zoek bent naar volledige bestand operaties zoals verwijderen en kopiëren van een bestand, lees dan python read file.

Geef een reactie

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