Redirection de la sortie « impression » vers un fichier
Lorsque vous tentez de rediriger la sortie « impression » vers un fichier texte en Python, les utilisateurs peuvent rencontrer des défis si leur code ne se comporte pas comme prévu. Dans de tels cas, utiliser sys.stdout pour rediriger la sortie peut conduire à des résultats inattendus.
Une approche simple et recommandée consiste à imprimer directement sur un objet fichier :
with open('out.txt', 'w') as f: print('Filename:', filename, file=f) # Python 3.x # print >> f, 'Filename:', filename # Python 2.x
Alternativement, pour un script ponctuel, la redirection 'sys.stdout' peut convenir :
import sys orig_stdout = sys.stdout f = open('out.txt', 'w') sys.stdout = f for i in range(2): print('i = ', i) sys.stdout = orig_stdout f.close()
Depuis Python 3.4, la bibliothèque standard fournit un gestionnaire de contexte qui simplifie cette tâche :
from contextlib import redirect_stdout with open('out.txt', 'w') as f: with redirect_stdout(f): print('data')
La redirection externe depuis le shell peut également être une option efficace :
./script.py > out.txt
Pour résoudre des problèmes potentiels, pensez à vérifier le premier nom de fichier dans le script, qui ne peut pas être initialisé. De plus, vérifier que le dossier existe et imprimer les « bamfiles » peut aider à identifier tout problème de découverte de fichiers. L'utilisation de 'os.path.join' et 'os.path.basename' pour la manipulation du chemin et du nom de fichier est recommandée pour une clarté de code optimale.
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!