@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' в виде ⌫⌫⌫ Rubout и сбрасывает новый период, чтобы добавить к длине индикатора выполнения. Затем он записывает три цифры страницы, до которой он дошел. Поскольку 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()
пара.
Обращаем ваше внимание, что оболочка Python Raspberry Pi IDLE3 не принимает символ возврата на обратную сторону как ⌫ rubout, а вместо этого печатает пробел, создавая вместо этого видимый список дробей.
- (o = 8> мудрый