Python io – BytesIO, StringIO

Le module Python io nous permet de gérer les opérations d’entrée et de sortie liées aux fichiers. L’avantage d’utiliser le module IO est que les classes et les fonctions disponibles nous permettent d’étendre la fonctionnalité pour permettre l’écriture sur les données Unicode.

Module IO de Python

Il existe de nombreuses façons d’utiliser le module io pour effectuer des opérations de flux et de tampon en Python. Nous allons montrer beaucoup d’exemples ici pour prouver le point. Commençons.

Python BytesIO

Comme ce que nous faisons avec les variables, les données peuvent être conservées sous forme d’octets dans un tampon en mémoire lorsque nous utilisons les opérations Byte IO du module io.

Voici un exemple de programme pour le démontrer :

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

Voyons la sortie de ce programme :
python IO BytesIO example
La fonction getvalue() prend simplement la valeur du Buffer sous forme de String.

Python StringIO

Nous pouvons même utiliser également StringIO qui est extrêmement similaire dans son utilisation à BytesIO. Voici un exemple de programme:

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

Voyons la sortie de ce programme:
python StringIO example
Notez que nous avons même fermé le tampon après avoir terminé avec le tampon. Cela permet d’économiser la mémoire des tampons car ils stockent les données en mémoire.

De plus, nous avons utilisé la méthode print avec un argument optionnel pour spécifier un flux IO de la variable, ce qui est parfaitement compatible avec une instruction print.

Lecture à l’aide de StringIO

Une fois que nous avons écrit des données dans le tampon StringIO, nous pouvons également les lire. Examinons un extrait de code :

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

Voyons la sortie de ce programme :
python io module read stringIO data

Lecture de fichier à l’aide de StringIO

Il est également possible de lire un fichier et de le diffuser sur un réseau sous forme d’octets. Le module io peut être utilisé pour convertir un fichier multimédia comme une image à convertir en octets. Voici un exemple de programme:

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

Voyons la sortie pour ce programme:

Pour que ce programme s’exécute, nous avions une image whale.png présente dans notre répertoire courant.

io.open() vs os.open()

La fonction io.open() est une façon bien préférée d’effectuer des opérations d’E/S car elle est faite comme une interface de haut niveau pour effectuer des E/S de fichiers. Elle enveloppe le descripteur de fichier de niveau OS dans un objet que nous pouvons utiliser pour accéder au fichier d’une manière Pythonique.

La fonction os.open() se charge de l’appel système POSIX de plus bas niveau. Elle prend des arguments basés sur POSIX en entrée et renvoie un descripteur de fichier qui représente le fichier ouvert. Elle ne renvoie pas un objet fichier ; la valeur renvoyée n’aura pas de read() ou de write() fonctions.

Dans l’ensemble, la fonction io.open() est juste un wrapper sur la fonction os.open(). La fonction os.open() ne fait que définir également la configuration par défaut comme les drapeaux et le mode alors que io.open() ne le fait pas et dépend des valeurs qui lui sont passées.

Conclusion

Dans cette leçon, nous avons étudié les opérations simples du module IO de python et comment nous pouvons également gérer les caractères Unicode avec BytesIO. Cependant, si vous recherchez des opérations complètes sur les fichiers telles que la suppression et la copie d’un fichier, alors lisez python read file.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *