2014-10-27 15 views
6

NTP sunucusu tarafından önceki alınan Zamanlama (geri sayım) üzerine yazılarak çıkışa aynı satırda nasıl çıkış yapılır. Aşağıda gösterildiği gibi her ikinci zamanlama sonraki satırda alıyor.Aynı satırın üzerine yazarak çıktı önceki

13:35:01 

13:35:00 

13:34:59 

13:34:58 

13:34:57 

13:34:56 

Zamanlamayı aynı satırdaki bir önceki temizleme işleminde almalıyım.

cevap

14

use the "return"-character \r to return to the beginning of the line. Python 2.x'te, print yerine sys.stdout.write ve sys.stdout.flush kullanmanız gerekir.

import time, sys 
while True: 
    sys.stdout.write("\r" + time.ctime()) 
    sys.stdout.flush() 
    time.sleep(1) 

Python 3.3 olarak, end ve flush parametrelerle, print işlevini kullanabilirsiniz: Ancak

print(time.ctime(), end="\r", flush=True) 

Not, bu şekilde Ekranda sadece son hattı yerini. Daha karmaşık bir konsolda yalnızca kullanıcı arayüzünde "canlı" bir saatiniz varsa, curses'u kontrol etmelisiniz.

import time, curses 
scr = curses.initscr() 
scr.addstr(0, 0, "Current Time:") 
scr.addstr(2, 0, "Hello World!") 
while True: 
    scr.addstr(0, 20, time.ctime()) 
    scr.refresh() 
    time.sleep(1) 
+0

Mükemmel çözüm, teşekkürler! –

0

def hook(bcount , bsize, tsize): 
    str = "[ %3d%% of %10d] \r" % (bcount * bsize * 100/tsize , tsize)  
    print str, 

urllib.urlretrieve (url, file_name, hook) 

Açıklama urllib.urlretrieve kullanarak, ben piton 2,7

python --version 
Python 2.7.12 :: Anaconda 4.1.1 (64-bit) 

kullanıyorum ve indirme ilerlemesini görüntülemek için bir kanca olarak bu aşağıdaki işlevi kullanıyorum: satırın başında imleci koyun ve virgül yeni bir satırda yazdırmaktan kaçınır, her baskı için aynı sayıda karakteriniz varsa, bu

numarasını yapar

Eğer urllib ve hook'u merak ediyorsanız, kullanacağınız belgeler https://docs.python.org/2/library/urllib.html

İlgili konular