Retourner aux forums || Retourner au forum Programmation.python

Programmation.python : retour chariot

Posté par Treepwood (page perso, ) le 05 juillet 2006
0
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

> Lire le message (5 commentaires, moyenne: 1,4).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

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

heu...

Posté par Treepwood (page perso, ) le 05/07/2006 à 20:12. (lien). É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 Treepwood (page perso, ) le 05/07/2006 à 20:14. (lien). É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 Sebastien Binet () le 07/07/2006 à 23:09. (lien). É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 Antoine Reilles (Jabber id, page perso, ) le 05/07/2006 à 21:09. (lien). É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 starcom () le 10/07/2006 à 14:27. (lien). É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

Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.python