@lenooh sorgumu tatmin etti. 'Python supress newline'ı ararken bu makaleyi keşfettim. PuTTY için Python 3.2 geliştirmek için Raspberry Pi üzerinde IDLE3 kullanıyorum. PuTTY komut satırında bir ilerleme çubuğu oluşturmak istedim. Sayfanın kaymasını istemiyordum. Kullanıcının, programın durma noktasına gelmediğini veya neşeli sonsuz bir döngüde öğle yemeğine gönderilmediğini korkutmasını sağlamak için yatay bir çizgi istedim - beni 'bırakma, iyi yapıyorum' ama bu biraz zaman alabilir. ' etkileşimli mesaj - metindeki ilerleme çubuğu gibi.
İlk print('Skimming for', search_string, '\b! .001', end='')
harfi üç boşluk ve ardından nokta olarak yazdırarak, '001' i silerek ve nokta çizgisini uzatan bir sonraki ekran yazma için hazırlayarak mesajı başlatır. search_string
Kullanıcı girdisini papağan ettikten sonra , \b!
metnimin ünlem noktasını, aksi takdirde noktalama işaretlerini düzgün bir şekilde yerleştirerek, zorlayan search_string
alana geri print()
keser. Bunu bir boşluk ve simüle ettiğim 'ilerleme çubuğunun' ilk 'noktası' izler. Gereksiz olarak, ileti, kullanıcıdan ilerlemenin işlendiğini ve daha sonra oluşturacağımız dönem sayısını da yansıtacak şekilde uyarmak için sayfa numarasıyla (baştaki sıfırlarla üç uzunlukta biçimlendirilmiş) hazırlanır. sağ.
import sys
page=1
search_string=input('Search for?',)
print('Skimming for', search_string, '\b! .001', end='')
sys.stdout.flush() # the print function with an end='' won't print unless forced
while page:
# some stuff…
# search, scrub, and build bulk output list[], count items,
# set done flag True
page=page+1 #done flag set in 'some_stuff'
sys.stdout.write('\b\b\b.'+format(page, '03')) #<-- here's the progress bar meat
sys.stdout.flush()
if done: #( flag alternative to break, exit or quit)
print('\nSorting', item_count, 'items')
page=0 # exits the 'while page' loop
list.sort()
for item_count in range(0, items)
print(list[item_count])
#print footers here
if not (len(list)==items):
print('#error_handler')
İlerleme çubuğu eti sırada sys.stdout.write('\b\b\b.'+format(page, '03'))
. İlk olarak, sola silmek için imleci üç sayısal karakterin üzerine 'ruble olarak' \ b \ b \ b 'ile yedekler ve ilerleme çubuğu uzunluğuna eklemek için yeni bir süre bırakır. Ardından, o ana kadar ilerlediği sayfanın üç basamağını yazar. Çünkü sys.stdout.write()
tam tampon ya da çıkış kanalı için bekler, kapatma sys.stdout.flush()
kuvvetleri hemen yazma. sys.stdout.flush()
sonu print()
ile atlanır inşa edilir print(txt, end='' )
. Daha sonra kod, sıralı zaman yoğun işlemlerinden geçerken, üç basamağı silmek, bir nokta eklemek ve tekrar üç basamak yazmak için buraya geri dönene kadar başka bir şey basmaz.
Sildi ve yeniden yazılabilir üç basamaklı gerekli hiçbir şekilde - bu örnek bir model sadece güzelleşmek var sys.stdout.write()
karşı print()
. Bir nokta ile kolayca hazırlanabilir ve üç süslü ters eğik çizgi-b ⌫ arka alanını unutabilirsiniz (elbette biçimlendirilmiş sayfa sayıları da yazmazsınız). sys.stdout.write('.'); sys.stdout.flush()
çift.
Raspberry Pi IDLE3 Python kabuğunun arka boşluğu ⌫ rubout olarak onurlandırmadığını, bunun yerine bir boşluk yazdırdığını ve bunun yerine görünür bir kesir listesi oluşturduğunu unutmayın.
- (o = 8> wiz