2017-04-12 23 views
5

Yazdırılan son satırın üzerinde komut satırında bir şey yazdırmak için python'da bir yol var mı? Ya da, benim elde etmek istediğim şeye benzer şekilde, son çizginin bozulmadan kalmasını sağlayın, yani üzerine yazmayın.Son basılan satırın üzerindeki Python çıkışı

Bunun amacı, komut satırındaki son satırın bir durum/öncelik çubuğu olmasını sağlamaktır.

Çıktı örneği:

File 1 processed 
(0.1% Completed) 

Sonraki yenileme:

File 1 processed 
File 2 processed 
(0.2% Completed) 

Sonraki yenileme:

File 1 processed 
File 2 processed 
File 3 processed 
(0.3% Completed) 

cevap

4
from time import sleep 
erase = '\x1b[1A\x1b[2K' 

def download(number): 
    print(erase + "File {} processed".format(number)) 

def completed(percent): 
    print("({:1.1}% Completed)".format(percent)) 

for i in range(1,4): 
    download(i) 
    completed(i/10) 
    sleep(1) 

İşleri benim piton 3.4'te, son çıkış geçerli:

terminal kaçış kodları hakkında daha fazla okumak isterseniz
File 1 processed 
File 2 processed 
File 3 processed 
(0.3% Completed) 

deneyin: https://en.wikipedia.org/wiki/ANSI_escape_code

Talep edildiğinde, e bir boşlukla xample:

from time import sleep 
erase = '\x1b[1A\x1b[2K' 

def download(number): 
    print(erase*2 + "File {} processed".format(number)) 

def completed(percent): 
    print("\n({:1.1}% Completed)".format(percent)) 

print("\n(0.0% Completed)") 
for i in range(1,5): 
    download(i) 
    completed(i/10) 
    sleep(1) 

son çıkış geçerli:

File 1 processed 
File 2 processed 
File 3 processed 
File 4 processed 

(0.4% Completed) 
+0

Ve işlenen dosya bloğu ile yüzde arasında boş bir satır bırakmak istediğimde ne yapmalıyım? Bence bu oldukça zor olurdu – PyCV

+0

Eğer doğru bir şekilde anlarsam, hiç de bir cevaba bir örnek ekledim. – mucka

1

\r komutu bir göz atın. Bu hile yapabilir.

for i in range(2): 
    print '\rFile %s processed' % i 
    print '(0.%s%% Completed)' % i, 

Çıktı geçerli:

File 0 processed 
File 1 processed 
(0.1% Completed) 
+0

Bu sadece bu özel durum için ama çalışır. Image Farklı işlemlerden (çoklu işlem modülü) birkaç çıkışım var ve gelişmiş bir yüzdeyi takip etmek istiyorum. – PyCV

+0

@PyCV Birden çok işleminiz varsa ve görüntüyü koordine etmek istiyorsanız, bunların tümü çıktılarını yapmak için bir yere göndermelidir. Çok işlemli bir havuz yapıyor olsaydınız, 'imap_unordered' iyi bir yol olurdu. – tdelaney

İlgili konular