Секвенциальная печать в одну строку в скрипте: как решить
Быстрый ответ
Python 3 и более новые версии: используйте print(…, end='') для этого. Параметр end='' позволяет не выполнять автоматического перехода на новую строку после вывода.
print("Привет", end=' ')
print("Мир")
Таким образом, результат: Привет Мир будет выведен в одну строчку. Наслаждайтесь! 🐳

Вывод без перехода на новую строку в Python 3
В Python 3, параметр end функции print() указывает, какой символ будет добавляться в конце каждого вывода. По умолчанию используется символ \n, что означает переход на новую строку. Если необходимо осуществить вывод без перехода на новую строку, используйте пустую строку в качестве end ('').
print("Первый вызов print", end='')
print(" Второй вызов print")
Опция
Функция print() по умолчанию буферизует вывод, из-за чего при итеративном выводе могут возникать задержки. Для немедленной очистки буфера можно использовать параметр flush=True.
print("Обработка...", end="", flush=True)
Так, проблемы с буферизацией никогда не заставят вас ждать! 💪
Вывод без перехода на новую строку в Python 2
Если вы работаете с Python 2, то для удаления автоматического перевода на новую строку достаточно добавить запятую в конце оператора print.
print "Обработка...",
Таким образом удаляется переход на новую строку, одновременно добавляя пробел в конце, как выражение того, что Python 2 говорит нам: "Примите это, как компенсацию за непередовую версию".
Применение
Для полного контроля над выводом, а также чтобы предотвратить добавление пробела в Python 2, следует использовать sys.stdout.write(). Для немедленного вывода результата примените sys.stdout.flush().
import sys
sys.stdout.write("Обработка...")
sys.stdout.flush()
Возврат каретки для перезаписи последнего вывода
Символ возврата каретки ("\r") позволяет перезаписать последний вывод. Это особенно полезно при создании индикаторов выполнения задач или анимированных часов.
print("3...2...1... Подождите, давайте начнем снова!", end="\r")
Это словно карточка из "Монополии" — "Выйдите из тюрьмы бесплатно", когда нужно быстро исправить ошибку.
Визуализация
Каждый вызов функции print() можно сравнить с добавлением товара в корзину покупок 🛒. Применение параметра end аналогично заданию: "Я ещё не завершил!"
print("🍏", end='') # Добавляем в корзину яблоко
print("🍌", end='') # Кладём в корзину банан, но пока не заканчиваем покупки
print("🍓") # И в завершение добавляем клубнику – покупки совершены
Такой процесс покупок выглядит следующим образом:
Изначально: 🛒
Шаг 1: 🛒🍏
Шаг 2: 🛒🍏🍌
Результат: 🛒🍏🍌🍓
Использование символа "забой" при выводе
При посимвольном выводе вы можете использовать '\x08' для возвращения на шаг назад. Это схоже с действием Ctrl + Z при программировании.
import time
print("Загрузка", end='')
for _ in range(10):
print('.', end='', flush=True)
time.sleep(0.5) # Отдыхаем полсекунды
print('\x08', end='', flush=True) # Упс, ошибка! Используем забой
Создание пользовательских последовательностей вывода
Если функционал print() не обеспечивает необходимый уровень контроля, используйте sys.stdout.write() и '\r' для создания своих собственных последовательностей вывода.
import sys
sys.stdout.write("Загрузка...\r")
Полезные материалы
- Your Guide to the Python print() Function – Real Python — подробное руководство по функции
print()в Python. - sys — System-specific parameters and functions — Python 3.12.2 documentation — официальная документация для
sys.stdoutв Python. - time — Time access and conversions — Python 3.12.2 documentation — информация о работе со временем в Python.
- Python String format() Method — описание метода
format()для строк в Python. - PEP 498 – Literal String Interpolation — информация об использовании f-строк в Python.
- Python end parameter in print() – GeeksforGeeks — описание параметра
endфункцииprint()в Python.


