Maison >développement back-end >Tutoriel Python >Comment rediriger correctement la sortie d'impression Python vers un fichier texte ?

Comment rediriger correctement la sortie d'impression Python vers un fichier texte ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-27 19:43:14240parcourir

How to Properly Redirect Python Print Output to a Text File?

Rediriger la sortie Python vers un fichier texte

Lorsque vous essayez de rediriger la sortie d'impression vers un fichier texte à l'aide de Python, vous pouvez rencontrer des difficultés si votre choix La méthode ne produit pas les résultats souhaités.

Description du problème

Ce qui suit le code ne parvient pas à rediriger la sortie vers un fichier à l'aide de sys.stdout :

f = open('output.txt','w')
sys.stdout = f

path= '/home/xxx/nearline/bamfiles'
bamfiles = glob.glob(path + '/*.bam')

for bamfile in bamfiles:
    filename = bamfile.split('/')[-1]
    print 'Filename:', filename

Solution

Au lieu de sys.stdout, envisagez d'utiliser un objet fichier pour l'impression :

with open('out.txt', 'w') as f:
    print('Filename:', filename, file=f)  # Python 3.x

Alternative Solutions

  • Utiliser un gestionnaire de contexte pour rediriger la sortie :
from contextlib import redirect_stdout

with open('out.txt', 'w') as f:
    with redirect_stdout(f):
        print('data')
  • Rediriger la sortie en externe depuis le shell :
./script.py > out.txt

Supplémentaire Considérations

  • Assurez-vous que la fonction glob localise les fichiers prévus.
  • Manipulez correctement les chemins de fichiers à l'aide de os.path.join et os.path.basename.

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