Partage
  • Partager sur Facebook
  • Partager sur Twitter

Dysfonctionnement de print

Refus d'afficher dans la console après changement de flux standard

Sujet résolu
    26 novembre 2023 à 19:47:21

    Bonjour,

    Je voudrais écrire un message dans un fichier .txt à l'aide de print à partir de l'interpréteur d'idle en changeant de flux standard d'écriture, puis retrouver ce même fichier en rechangeant le même flux standard dans le but d'afficher sur la console le répertoire courant de python dans lequel il se trouve avec getcwd. Voici ce que j'ai tenté :

    >>> import sys
    >>> fichier = open('sortie.txt', 'w')
    >>> sys.stdout = fichier
    >>> print("Quelque chose...")
    >>> sys.stdout = sys.__stdout__
    >>> import os
    >>> print(os.getcwd())
    >>>

    Comme rien ne s'est afficher en console j'ai également tenté la suite d'instructions suivante : 

    >>> import sys
    >>> fichier = open('sortie.txt', 'w')
    >>> sys.stdout = fichier
    >>> print("Quelque chose...")
    >>> fichier.close()
    >>> sys.stdout = sys.__stdout__
    >>> print("Maintenant, l'affichage est de retour dans l'interpréteur.")
    >>> 

    Néanmoins cette suite n'a pas plus fonctionnée que la précédente. Quelqu'un saurait-il ce qui manque pour pouvoir réafficher des messages à l'écran avec print, après avoir changer son flux d'écriture ?

    Cordialement

    -
    Edité par 1Stark 3 décembre 2023 à 17:48:20

    • Partager sur Facebook
    • Partager sur Twitter
      26 novembre 2023 à 20:58:38

      Bonsoir,

      Tu as oublié quelques détails,

      >>> import sys
      >>> standard_output = sys.stdout # sauvegarder l'output standard d'origine
      >>> fichier = open("sortie.txt", 'w')
      >>> sys.stdout = fichier
      >>> print("Quelque chose...")
      >>> sys.stdout = standard_output
      >>> import os
      >>> print(os.getcwd())
      /home/fred1599
      >>> fichier.close()
      >>> with open("sortie.txt", 'r') as f:
      ...     print(f.read())
      ... 
      Quelque chose...
      
      • Sauvegarder l'output standard d'origine dans standard_output
      • Assigner le fichier ouvert à sys.stdout pour rediriger print
      • Réassigner standard_output à sys.stdout pour annuler la redirection
      • Partager sur Facebook
      • Partager sur Twitter

      Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
      La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

        28 novembre 2023 à 16:07:05

        1Stark a écrit:

        Je voudrais écrire un message dans un fichier .txt à l'aide de print à partir de l'interpréteur d'idle en changeant de flux standard d'écriture

        Avec le print de python, on peut déjà écrire:

        >>> import sys
        >>> fichier = open('sortie.txt', 'w')
        >>> print("Quelque chose...", file=fichier)

        sinon la bibliothèque standard contextlib inclue redirect_stdout



        -
        Edité par mps 28 novembre 2023 à 16:07:40

        • Partager sur Facebook
        • Partager sur Twitter

        Dysfonctionnement de print

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        • Editeur
        • Markdown