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

Comment puis-je rediriger la sortie de la console vers un fichier en Python ?

DDD
DDDoriginal
2024-12-06 17:54:14867parcourir

How Can I Redirect Console Output to a File in Python?

Redirection de la sortie de la console vers un fichier

En Python, la redirection du flux stdout vers un fichier permet aux développeurs de capturer et d'enregistrer la sortie imprimée. Pour y parvenir, l'attribut sys.stdout peut être manipulé. Cependant, un problème récent a été signalé où l'approche décrite dans la question d'origine ne génère pas le résultat souhaité.

Résolution du problème

Le problème réside dans le mauvais utilisation du paramètre file= lors de l'impression. Dans les versions 3.x et supérieures de Python, la syntaxe correcte est print('Filename:', filename, file=f). Pour Python 2.x, utilisez print >> f, 'Filename:', filename.

Alternativement, l'instruction with peut être utilisée pour rediriger la sortie standard de manière plus concise :

with open('output.txt', 'w') as f:
    with redirect_stdout(f):
        print('Filename:', filename)

Méthodes supplémentaires

En plus d'utiliser sys.stdout, il existe d'autres méthodes pour rediriger sortie :

  • Utilisation d'un objet fichier : Écrivez directement dans un objet fichier, comme indiqué ci-dessous :

    with open('out.txt', 'w') as f:
      print('Filename:', filename, file=f)
  • Redirection du shell externe : Utilisez le > opérateur dans le shell pour rediriger la sortie :

    ./script.py > out.txt

Dépannage

Dans le script fourni, assurez-vous :

  • Le chemin spécifié (/home/xxx/nearline/bamfiles) contient un .bam valide fichiers
  • La fonction glob.glob identifie correctement ces fichiers
  • Le chemin complet de l'exécutable samtools est correct (/share/bin/samtools/samtools)

Résultat amélioré

En utilisant la syntaxe corrigée et un objet fichier, le Le résultat attendu serait :

Filename: ERR001268.bam
Readlines finished!
Mean: 233
SD: 10
Interval is: (213, 252)

Cette version mise à jour du script capture la sortie et la redirige vers le fichier output.txt.

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