Maison >développement back-end >Tutoriel Python >Comment puis-je rediriger la sortie « print » de Python vers un fichier ?

Comment puis-je rediriger la sortie « print » de Python vers un fichier ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-01 07:39:11160parcourir

How Can I Redirect Python's `print` Output to a File?

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!

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