Vous êtes ici : Accueil / Forums & ML / Forums Python / Forum général Python / print et "\r"

print et "\r"

Remonter à Forum général Python
  • print et "\r"

    Envoyé par Fred le 31 Mai 2007 à 11:54
    Bonjour,

    J'ai un petit problème d'impression dans un terminal X avec python : Je souhaiterais écrire toujours sur la même ligne, en PERL il suffit de mettre un retour chariot et le problème est résolu, mais en Python, cela ne fonctionne pas.
    Par exemple si je fais :

    print "A\r"
    print "B\r"

    J'obtiens :
    A
    B

    au lieu de :
    B

    Je n'ai pourtant jamais indiqué de sauter une ligne...

    Merci de votre aide
    • Re: print et "\r"

      Envoyé par pacificator le 31 Mai 2007 à 13:15
      essaye:
      print "A",
      print "B"
      • Re: print et "\r"

        Envoyé par Fred le 31 Mai 2007 à 14:23
        cette solution donne :
        A B

        et non

        B

        Je voudrais que le curseur reste toujours à la meme place...
    • Re: print et "\r"

      Envoyé par gawel le 31 Mai 2007 à 15:22
      la commande print ajoute un \n

      La solution est de jouer avec sys.stdout


      import sys

      sys.stdout.write('A\r')
      sys.stdout.write('B\n')
      • Re: print et "\r"

        Envoyé par Fred le 31 Mai 2007 à 15:38
        Merci pour la réponse.
        Effectivement cette solution (complexe) fonctionne pour afficher des chaines de caractères mais pas des variables :


        import sys
        x = 10
        sys.stdout.write(x,'\r')
        x = 11
        sys.stdout.write(x,'\n')


        sys.stdout.write(x,'\r')
        TypeError: function takes exactly 1 argument (2 given)

        je n'ai pas trouvé de syntaxe qui fonctionne pour les variables...
    • Re: print et "\r"

      Envoyé par jpcw2002 le 31 Mai 2007 à 21:36
      C'est effectivement un problème de syntaxe :)

      De la à dire que tu essaie de coder en python comme en perl :)

      import sys
      x = 10
      sys.stdout.write(('%s\r') %x)
      x = 11
      sys.stdout.write(('%s\n') %x)
      affichera 11 dans ton terminal.
      @++
Rendu par Ploneboard