Forum Programmation.python retour chariot

Posté par  .
Étiquettes : aucune
0
5
juil.
2006
bon[jour/soir],
je voudrais faire quelque chose du style

import time
print "blablabla.....",
time.sleep(1)
print "taratata!"

et que ça me donne au final
"blablabla..." puis, une seconde plus tard "taratata" qui viens se coller derrière...

seulement ça attends la seconde et ça affiche tout d'un coup...

y'a moyen ou pas ?
si oui comment? (pour ce qui repondent juste "oui")

merci
  • # heu...

    Posté par  . Évalué à 1.

    oui enfin bon le titre a pas vraiment à voir...
    désolé je suis fatigué
    c'est qu'en fait je pensais à une manière de faire le schmile et je vous en ai marqué une autre

    ce à quoi je pensais originelement :


    import time
    print "blablabla..."
    time.sleep(1)
    print "blablabla...taratata"


    mais c'est plus lourd et ça doit etre pour ça que j'ai fait l'échange automatiquement sans y penser...

    je suis pas fou !

    si quelqu'un a une solution quand même à l'un ou l'autre des façons ...
    • [^] # Re: heu...

      Posté par  . Évalué à 1.

      décidement... ça m'apprendra à ecrire trop vite

      import time
      print "blablabla...",
      time.sleep(1)
      print "\r"
      print "blablabla...taratata"

      pitié pas de moinssage
      • [^] # Re: heu...

        Posté par  . Évalué à 1.

        Je suppose qu'un truc de ce genre devrait "faire la rue Michel":
        import sys,time,os
        
        sys.stdout.write("downloading kernel.3.0.0 from IPoT ")
        sys.stdout.flush()
        for i in range(10):
            sys.stdout.write(".")
            sys.stdout.flush()
            time.sleep(0.1)
        sys.stdout.write( "".join( [" [OK]", os.linesep] ) )
        sys.stdout.flush()
        
        print "You can proceed with installation."
        
  • # flush

    Posté par  (site web personnel) . Évalué à 3.

    ce que tu veux, c'est flusher stdout après le premier print.

    python "flushe" automatiquement quand tu ajoute un retour chariot, c'est pourquoi ta seconde solution marche.
    Tu peut aussi forcer python a ne pas bufferiser stdout (option -u en ligne de commande)
    ou le former dans le programme a flusher quand tu veux, avec

    import time,sys
    print "aa"
    sys.stdout.flush()
    time.sleep(1)
    print "bb"
    sys.stdout.flush()

    les "aa" et "bb" s'afficheront dans les temps.

    (en fait, ça se passe en gros comme en C...)
  • # C'est ça que tu veux faire ?

    Posté par  . Évalué à 1.

    Bon, j'ai commencé le Python y a deux jours, alors je vois pas ce qui est difficile.

    je fais:

    from time import sleep
    print "blablabla...",
    sleep(1)
    print "taratata"


    et ça à l'air de correspondre à ce que tu souhaites.
    Si c'est le cas, tant mieux ! ;D

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.