Le module io de Python 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 fonctions disponibles nous permettent d’étendre la fonctionnalité pour permettre l’écriture de données Unicode.
Module IO 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 ici démontrer de nombreux exemples pour illustrer le point. Commençons.
BytesIO Python
Tout 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 programme d’exemple pour le démontrer:
import io
stream_str = io.BytesIO(b"JournalDev Python: \x00\x01")
print(stream_str.getvalue())
Voyons la sortie de ce programme: La fonction
getvalue()
récupère simplement la valeur du tampon sous forme de chaîne de caractères.
StringIO Python
Nous pouvons même utiliser StringIO
également, qui est extrêmement similaire à BytesIO
. Voici un programme d’exemple:
import io
data = io.StringIO()
data.write('JournalDev: ')
print('Python.', file=data)
print(data.getvalue())
data.close()
Voyons la sortie pour ce programme: Remarquez que nous avons même fermé le tampon après avoir terminé avec le tampon. Cela aide à économiser la mémoire tampon car elles stockent des données en mémoire. De plus, nous avons utilisé la méthode print avec un argument facultatif pour spécifier un flux IO de la variable, ce qui est parfaitement compatible avec une instruction print.
Lecture en utilisant StringIO
Une fois que nous avons écrit des données dans le tampon StringIO, nous pouvons également les lire. Regardons un extrait de code:
import io
input = io.StringIO('This goes into the read buffer.')
print(input.read())
Voyons la sortie pour ce programme:
Lecture de fichier en utilisant StringIO
Il est également possible de lire un fichier et de le diffuser sur un réseau en tant qu’octets. Le module io peut être utilisé pour convertir un fichier multimédia comme une image en octets. Voici un programme exemple:
import io
file = io.open("whale.png", "rb", buffering = 0)
print(file.read())
Voyons la sortie pour ce programme: Pour que ce programme fonctionne, nous avions une image whale.png présente dans notre répertoire actuel.
io.open() vs os.open()
La fonction io.open()
est une manière beaucoup plus préférée d’effectuer des opérations d’E/S car elle est conçue comme une interface de haut niveau pour effectuer des opérations d’E/S de fichier. Elle enveloppe le descripteur de fichier au niveau du système d’exploitation dans un objet que nous pouvons utiliser pour accéder au fichier de manière pythonique. La fonction os.open()
s’occupe de l’appel système POSIX de plus bas niveau. Elle prend en compte les arguments basés sur POSIX et renvoie un descripteur de fichier qui représente le fichier ouvert. Elle ne renvoie pas un objet de fichier ; la valeur renvoyée n’aura pas de fonctions read()
ou write()
. Dans l’ensemble, la fonction io.open()
est simplement un wrapper autour de la fonction os.open()
. La fonction os.open()
configure également les paramètres par défaut tels que les indicateurs et le mode, tandis que io.open()
ne le fait pas et dépend des valeurs qui lui sont transmises.
Conclusion
Dans cette leçon, nous avons étudié les opérations simples du module d’E/S de Python et comment nous pouvons gérer les caractères Unicode avec BytesIO également. Cependant, si vous recherchez des opérations de fichier complètes telles que la suppression et la copie d’un fichier, alors lisez python lire fichier. Référence : Documentation de l’API.
Source:
https://www.digitalocean.com/community/tutorials/python-io-bytesio-stringio