print išvedimas į ekraną realiu laiku

C
  • 12 Kov '10

Sveiki, toks gal ir paprastas klausimas, bet man nesiseka jo išspręsti. Turiu tokią simple programėlę:

#!/usr/bin/python2.6

import time

if __name__ == "__main__":
    print "Starting to sleep.. ", 
    time.sleep(5)
    print "done!"

Kaip man išvesti į ekraną realiu laiku ir vienoje eilutėje tuos du print sakinius? Nes dabar išveda, tik kai pabaigia sleep komandą...

C
  • 14 Kov '10

Jeigu kam reikės, tai galima padaryti taip:

import time, sys

if __name__ == "__main__":
   print "Sleeping...",
   sys.stdout.flush()
   time.sleep(5)
   print "done"
S
  • 15 Kov '10

o yra galimybe issivesti sleep metu i ekrana to taimerio reiksmes, na kad butu matyt kiek liko iki sleep pabaigos. tarkim jei turim time.sleep(60), tai kad ekrane butu matyti tiksincios sekundes iki 60?

C
  • 15 Kov '10

Beje, tas flush reikalingas tik and linux, ant windows veikia ir be jo.

Dėl sleep išvedimo į ekraną tai nemanau, kad galima, bet nesunku pasirašyti, kad išvestų tai ko nori, pvz:

import time
if __name__ == "__main__":
    for i in range(60, 1, -1):
        print i
        time.sleep(1)
S
  • 15 Kov '10

Pasižiūrėjau pas save. Jei po print "Sleeping...", pašalini kablelį, tai išveda iš karto, jei su kableliu, tada neišveda.

C
  • 15 Kov '10

Taip, bet pašalinus kablelį išveda naujoj eilutėj, o aš noriu toj pačioj eilutėj išvesti.