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 :
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:
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 :
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.