Effectuer des opérations d’E/S sur une chaîne de caractères

Vous voulez alimenter un code qui a été écrit pour fonctionner sur des objets de type fichier avec un texte ou une chaîne binaire à à la place.

Utilisez les classes io.StringIO() et io.BytesIO() du module io pour créer des objets de type fichier qui fonctionnent sur des données de type chaîne de caractères. Par exemple :

>>> import io
>>> s = io.StringIO()
>>> s.write('Python est amusant\n')
19

>>> print('Voici un test', file=s)
>>> # Obtenez toutes les données écrites jusqu'à présent
>>> s.getvalue()
'Python est amusant\nVoici un test\n'

>>> 

>>> # Envelopper une chaîne existante par une interface de fichier
>>> s = io.StringIO('Python \nest amusant\n')
>>> s.read(4)
'Pyth'
>>> s.read()
'on \nest amusant\n'
>>>

 

La classe io.StringIO ne doit être utilisée que pour les données textuelles. Si vous utilisez des données binaires, utilisez plutôt la classe io.BytesIO. Par exemple:

>>> s = io.BytesIO()

>>> s.write(b'python est amusant')
18

>>> s.getvalue()
b'python est amusant'

>>>

 

Les classes StringIO et BytesIO sont les plus utiles dans les scénarios où vous devez reproduire un fichier normal pour une raison quelconque.

Par exemple, dans les tests unitaires, vous pouvez utiliser StringIO pour créer un objet de type fichier contenant des données de test qui sont envoyées a une fonction qui, sinon, fonctionnerait avec un fichier normal.

Sachez que les instances de StringIO et BytesIO n’ont pas de descripteur de fichier entier approprié. Ainsi, ils ne fonctionnent pas avec du code qui nécessite l’utilisation d’un fichier de niveau système réel tel que file, pipe ou socket.

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here