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!