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
Libérer: 2024-12-06 17:54:14
original
788 Les gens l'ont consulté

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)
Copier après la connexion

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)
    Copier après la connexion
  • Redirection du shell externe : Utilisez le > opérateur dans le shell pour rediriger la sortie :

    ./script.py > out.txt
    Copier après la connexion

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)
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal