Maison >développement back-end >Tutoriel Python >Comment puis-je rediriger la sortie standard de Python vers un tampon de chaîne ?

Comment puis-je rediriger la sortie standard de Python vers un tampon de chaîne ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-24 07:18:13612parcourir

How Can I Redirect Python's Standard Output to a String Buffer?

Redirection de la sortie standard vers un tampon de chaîne en Python

Lors du développement d'un client FTP Python à l'aide du package ftplib, vous pouvez rencontrer des cas où certaines fonctions du package manquent de sortie de chaîne mais imprimez plutôt sur la sortie standard (stdout). Pour relever ce défi, il devient nécessaire de rediriger la sortie standard vers un objet pouvant être lu facilement.

Bien que la redirection basée sur les fichiers via open() soit une option, une méthode alternative qui n'utilise pas le lecteur local serait plus efficace. BufferedReader de Java offre un exemple précieux d'encapsulation d'un tampon dans un flux.

Pour obtenir une fonctionnalité similaire en Python, utilisez l'approche suivante :

from cStringIO import StringIO # Python3 use: from io import StringIO
import sys

old_stdout = sys.stdout
sys.stdout = mystdout = StringIO()

# Execute code that would normally print to stdout ...

sys.stdout = old_stdout

# Obtain the captured output as a string from mystdout.getvalue()

En redirigeant la sortie standard vers une instance StringIO, vous peut capturer et récupérer la sortie sous forme de chaîne chaque fois que nécessaire. Cette technique permet une plus grande flexibilité et élimine le besoin de recourir à un dossier externe.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn