Tek satırda yazdırma dinamik
Yeni satır ifadeleri arasında görmekten olmadan standart çıkış veren birkaç açıklama yapmak istiyorum.
Özellikle, ben varsayalım:
for item in range(1,100):
print item
Sonuç:
1
2
3
4
.
.
.
Onun yerine şuna ne gibi görünebilir:
1 2 3 4 5 ...
Daha da iyisi, tek yazdırmak mümkünüzerindeson sayı, tek sayı bir anda ekranda?
CEVAP
Bu arada...... Bu baskı, bu yüzden her zaman yenilemek için nasıl bir yerde sadece numarasını değiştirmek mi.
Genel olarak, bunu yapmanın yolu terminal control codes. Bu, sadece bir tane özel karakter lazım özellikle basit bir durum: 000 D U TAŞIMA Python '\r'
(ve diğer birçok dilde) yazılmış DÖNÜN. İşte tam bir örnek kodunuz:
from sys import stdout
from time import sleep
for i in range(1,20):
stdout.write("\r%d" % i)
stdout.flush()
sleep(1)
stdout.write("\n") # move the cursor to the next line
Bu konuda bazı şeyler şaşırtıcı olabilir:
\r
dize başında, program çalışırken, imleci her zaman sayı sonra olacak o kadar da gidiyor. Bu sadece kozmetik değil: öykünücüsünü eğer tersini yaparsan çok karışık bazı terminal.- Eğer son satırı, sonra program sona erdirir sonra bulunur musun eğer, kabuk sayısının üstüne kendi istemi yazdırır.
stdout.flush
bazı sistemlerde gerekli değildir, ya da herhangi bir çıktı alamazsınız. Diğer sistemleri buna ihtiyaç olmayabilir, ama herhangi bir zarar vermez.
Eğer bu işe yaramazsa bulursanız, şüpheli gereken ilk şey terminal öykünücüsü adamcağız. vttest programı test yardımcı olabilir.
print
ifadesi stdout.write
replace edebilirsin ama dosya nesneleri doğrudan kullanımı ile print
karıştırmak için değil tercih ederim.
Nasıl konsol Sistemi kullanarak renkli...
Sözlük oluşturma ve anahtar değer çift...
bir WordPress kullanmak .() canlı izle...
Java iyi bir dinamik SQL oluşturucu kü...
Dinamik olarak mümkün ve C derleme yür...