@lenooh задовольнив мій запит. Я виявив цю статтю під час пошуку "python suppress newline". Я використовую IDLE3 на Raspberry Pi, щоб розробити Python 3.2 для PuTTY. Я хотів створити панель прогресу в командному рядку PuTTY. Я не хотів, щоб сторінка прокручувалася. Мені хотілося, щоб горизонтальна лінія переконала користувача від того, що вона не лякається, що програма не припинилася і не була відправлена на обід у веселий нескінченний цикл - як благання "залишити мене, я все добре" але це може зайняти деякий час. " інтерактивне повідомлення - як смуга прогресу в тексті.
print('Skimming for', search_string, '\b! .001', end='')
Ініціалізує повідомлення з підготовки до наступного екрану-записи, який буде друкувати три забою , як ⌫⌫⌫ rubout , а потім період, витирання «001» і розширюючи лінію періодів. Після search_string
введення даних про папуг, \b!
обрізує знак оклику мого search_string
тексту назад на простір, який print()
інакше примушує, правильно розміщуючи розділові знаки. Далі слідує пробіл і перша «точка» панелі прогресу, яку я імітую. Зайве повідомлення також занурюється номером сторінки (відформатованої в три довжини з провідними нулями), щоб отримувати повідомлення від користувача про те, що прогрес обробляється, і який також відображатиме кількість періодів, які ми згодом розробимо до правильно.
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')
М'ясо барів прогресу в sys.stdout.write('\b\b\b.'+format(page, '03'))
черзі. По-перше, для стирання зліва він створює резервну копію курсору над трьома цифровими символами з позначкою "\ b \ b \ b" як "перемикання" і додає новий період, щоб додати до довжини смужки ходу. Потім він записує три цифри сторінки, на якій прогресував дотепер. Оскільки sys.stdout.write()
чекає закриття повного буфера або вихідного каналу, sys.stdout.flush()
примушує негайне записувати. sys.stdout.flush()
вбудований в кінець print()
якого обходитьprint(txt, end='' )
. Потім код проходить цикл через свої щоденні операції, поки він нічого більше не друкує, поки не повернеться сюди, щоб стерти три цифри назад, додати крапку і знову записати три цифри з збільшенням.
Три цифри, витерті та переписані, жодним чином не потрібні - це просто розквіт, що є прикладом sys.stdout.write()
проти print()
. Ви можете настільки ж просто простувати з періодом і забути три химерні пробіли "backslash-b ⌫" (звичайно, також не записувати відформатовані підрахунки сторінок), просто надрукуючи смугу періоду довше на кожен раз - без пробілів або нових рядків, використовуючи лише sys.stdout.write('.'); sys.stdout.flush()
пари.
Зауважте, що оболонка Raspberry Pi IDLE3 Python не враховує зворотний простір як «перемикання», а натомість друкує пробіл, створюючи натомість список очевидних фракцій.
- (o = 8> wiz