Я хочу запустить скрипт, который в основном показывает вывод, как это:
Installing XXX... [DONE]
В настоящее время я печатаю Installing XXX...
сначала, а затем печатаю [DONE]
.
Впрочем, теперь я хочу печатать Installing xxx...
и [DONE]
на одной строчке.
Любые идеи?
python
printing
stdout
line-breaks
user697108
источник
источник
Ответы:
Вы можете использовать
print
оператор, чтобы сделать это без импортаsys
.Запятая в конце
print
строки не позволяетprint
выдать новую строку (вы должны заметить, что в конце вывода будет дополнительный пробел).Решение Python 3
Поскольку вышеприведенное не работает в Python 3, вы можете сделать это вместо этого (опять же, без импорта
sys
):Функция печати принимает
end
параметр по умолчанию"\n"
. Установка его в пустую строку предотвращает выдачу новой строки в конце строки.источник
print("...", end="", flush=True)
в Python 3, в Python 2 добавьтеsys.stdout.flush()
вызов.print("Progress: {}%".format(var), end="\r", flush=True)
Вы можете просто использовать это:
и на выходе будет
не нужно перегибать
import sys
. Обратите внимание на запятую в конце.Python 3+
print("some string", end="");
для удаления вставки новой строки в конце. Читать подробнееhelp(print);
источник
print
Функция имеет немного другой синтаксис в Python 2 VS 3.Вы должны использовать backspace ' \ r ' или (' \ x08 ') char, чтобы вернуться на предыдущую позицию в выводе консоли
Python 2+:
Python 3:
Этот код будет считать от 0% до 100% в одной строке. Конечное значение будет:
Дополнительная информация о сбросе в этом случае здесь: Почему операторы печати python, содержащие аргументы 'end =', ведут себя по-разному в циклах while?
источник
Используйте
sys.stdout.write('Installing XXX... ')
иsys.stdout.write('Done')
. Таким образом, вы должны добавить новую строку вручную,"\n"
если хотите восстановить функциональность печати. Я думаю, что может быть ненужным использовать проклятия только для этого.источник
__future__
импорт или что-то подобное.Ни один из ответов не сработал для меня, так как все они остановились, пока не встретилась новая строка. Я написал простой помощник:
Чтобы проверить это:
«Привет» сначала распечатает и промокнет на экран перед сном. После этого вы можете использовать стандартную печать.
источник
sys.stdout.write
напечатает без возврата кареткиhttp://en.wikibooks.org/wiki/Python_Programming/Input_and_output#printing_without_commas_or_newlines
источник
Самое простое:
Python 3
Это означает, что он вернет курсор в начало, затем напечатает что-то и закончится в той же строке. Если в цикле он начнет печатать там же, где и начнется.
источник
print(’something to be override’, end=‘\r’)
это проще, хотя.Этот простой пример напечатает 1-10 в той же строке.
источник
Print имеет необязательный
end
аргумент, это то, что напечатано в конце. По умолчанию используется новая строка, но вы можете изменить ее на пустую строку. напримерprint("hello world!", end="")
источник
print 'something',
. Запятая в конце предотвращает добавление новой строки.Если вы хотите переписать предыдущую строку (а не постоянно добавлять к нему), вы можете комбинировать
\r
сprint(),
в конце заявления печати. Например,будет считать от 0 до 9, заменяя старый номер в консоли.
"...DONE!"
Будет печатать на той же строке, что и последний счетчик, 9.В вашем случае для OP это позволило бы консоли отображать процент завершения установки в виде «индикатора выполнения», где вы можете определить начальную и конечную позицию символа и обновить маркеры между ними.
источник
Вот 2.7-совместимая версия, полученная из версии 3.0 от @ Vadim-Zin4uk:
Python 2
В этом отношении предлагаемое решение 3.0 выглядит несколько раздутым. Например, метод backspace не использует целочисленный аргумент и, вероятно, может быть полностью исключен.
Python 3
Оба были проверены и работают.
источник
Это очень старая тема, но вот очень подробный ответ и пример кода.
\r
является строковым представлением возврата каретки из набора символов ASCII. Это то же самое, что восьмеричное015
[chr(0o15)
] или шестнадцатеричное0d
[chr(0x0d)
] или десятичное13
[chr(13)
]. Смотритеman ascii
для скучного чтения. Это (\r
) довольно переносимое представление, и его легко читать людям. Это очень просто означает переместить каретку на пишущей машинке полностью назад к началу, не продвигая бумагу. ЭтоCR
часть,CRLF
которая означает возврат каретки и перевод строки .print()
это функция в Python 3. В Python 2 (любая версия, которая вас заинтересует)print
можно принудительно ввести в функцию, импортировав ее определение из__future__
модуля. Преимуществоprint
функции заключается в том, что вы можете указать, что печатать в конце, переопределяя поведение по умолчанию\n
для печати новой строки в конце каждогоprint()
вызова.sys.stdout.flush
говорит Python сбросить вывод стандартного вывода , куда вы отправляете вывод,print()
если не указано иное. Вы также можете получить такое же поведение, запустив сpython -u
или установки переменной окруженияPYTHONUNBUFFERED=1
, тем самым пропускаяimport sys
иsys.stdout.flush()
звонки. Сумма, которую вы получаете за это, практически равна нулю, и ее не очень легко отладить, если вам удобно забыть, что вы должны сделать этот шаг, прежде чем ваше приложение будет работать должным образом.И образец. Обратите внимание, что это отлично работает в Python 2 или 3.
источник
print () имеет встроенный параметр "end", который по умолчанию имеет значение "\ n". Вызов print ("Это Америка") фактически вызывает print ("Это Америка", end = "\ n"). Самый простой способ сделать это - вызвать print ("Это Америка", end = "")
источник
Если вы предварительно сохранили значения в массиве, вы можете вызвать их в следующем формате:
источник
Python добавляет символ новой строки как конец для печати. Используйте end = '' для python3 для метода print, чтобы добавить пробел вместо новой строки. для python2 используйте запятую в конце оператора print.
источник
Нашел этот пост Quora , с этим примером, который работал для меня (python 3), который был ближе к тому, для чего я нуждался (т.е. стирал всю предыдущую строку).
Пример, который они предоставляют:
Для печати на той же строке, как предлагали другие, просто используйте
end=""
источник
Я нашел это решение, и оно работает на Python 2.7
источник
print
неправильный синтаксис для Python 2.7, и код не работает даже с правильным синтаксисом.