10
votes

Python, enregistrement des instructions d'impression tout en les ayant imprimé à stdout

J'ai un long script Python qui utilise souvent des déclarations d'impression, je me demandais s'il était possible d'ajouter du code qui enregistrerait toutes les instructions d'impression dans un fichier texte ou quelque chose comme ça. Je souhaite toujours que toutes les déclarations d'impression vont à la ligne de commande, car l'utilisateur est invité dans tout le programme. Si possible la journalisation de l'entrée de l'utilisateur serait également bénéfique.

J'ai trouvé ce qui répond quelque peu à ma question mais le rend où l'instruction "Imprimer" n'est plus imprimée à la ligne de commande

Redirect Python 'Imprimer' sortie sur l'enregistreur


5 Réponses :


16
votes

Vous pouvez ajouter ceci à votre script:

sys.stdout = backup


0 commentaires


3
votes

Si vous utilisez l'intégré Module de journalisation Vous pouvez configurer vos enregistreurs Avec autant de sorties que vous en avez besoin: Pour déposer, les bases de données, les e-mails, etc. Cependant, il vous semble que vous mélangez d'impression pour deux utilisations différentes: enregistrement (enregistrement du flux de programme pour une inspection ultérieure) et des invites. Les travaux réels seront de diviser ces deux utilisations de «impression» dans différentes fonctions afin d'obtenir ce dont vous avez besoin à chaque endroit.

Beaucoup de gens Remplacer Les SYS.STDOUT et SYS.STDERR de Python de Python sont automatiquement des trucs au texte qui est envoyé à la console. La véritable sortie de la console vit toujours dans sys .__ stdout __ et sys .__ STDERR __ (vous n'avez donc pas besoin de vous inquiéter de "perdre"), mais si vous collez un objet Avec les mêmes méthodes qu'un fichier dans les variables sys.stsdout et sys.ssderr Vous pouvez faire ce que vous voulez avec le processus de sortie.


0 commentaires

-2
votes

hm ... est-il difficile de mettre en œuvre votre propre fonction imprimée () et décorateur qui connectera tout ce qui est transmis à votre fonction d'impression? xxx


0 commentaires

3
votes

Lorsque vous essayez la meilleure réponse acceptée sur Python 3.7, j'ai eu l'exception suivante: xxx pré>

J'ai ajouté la fonction suivante pour le faire fonctionner: P>

    def flush(self):
        pass


0 commentaires