Команда вывода на экран и в файл: обзор возможностей print

Раздел: Основы Python -> Файловый ввод-вывод

Основы работы с print

Наиболее эффективный способ вывода данных в Python - использование встроенной функции print(). Она принимает один или несколько аргументов и выводит их на стандартное устройство вывода (обычно экран), разделяя пробелами и завершая переводом строки.

print('Привет, мир!')

ввод программ на python (ввод данных в программе python)

Привет, мир!

Python file io (ввод-вывод файлов в python)

Цель:

Вывод произвольного текста или значений переменных для отладки, взаимодействия с пользователем или логирования.

Как вывести несколько значений через пробел?

Передайте несколько аргументов через запятую:

print('Строка', 123, True)

Python temp files (временные файлы в python)

Строка 123 True

Python index files (индексация файлов в python)

Типичная ошибка:

Забыть разделять аргументы запятыми. При конкатенации разных типов без преобразования возникает ошибка TypeError. Используйте print('Возраст:', age) или f-строки.

Как изменить разделитель между аргументами?

Параметр sep (separator) задаёт строку-разделитель. По умолчанию - пробел.

print('a', 'b', 'c', sep=' -> ')

File python class (класс для работы с файлами в python)

a -> b -> c

Python file utf 8 (кодировка utf-8 для файлов в python)

Полезно для форматированного вывода списков или CSV.

Как отменить перевод строки в конце?

Параметр end определяет завершающий символ. По умолчанию '\n'.

print('Без переноса', end='')
print(' на той же строке')

Python config files (конфигурационные файлы в python)

Без переноса на той же строке

Python copy file (копирование файла в python)

Ошибка:

Использование end='' при выводе в файл может привести к склеиванию строк. Убедитесь, что нужен перевод строки.

Как вывести в файл, а не на экран?

Параметр file принимает объект с методом .write(), например открытый файл.

with open('log.txt', 'w') as f:
print('Ошибка: деление на ноль', file=f)

Python log file (логирование в файл в python)

Результат: в файл log.txt будет записана строка.

Проблема кодировки:

При записи в файл на Windows может использоваться cp1251. Для явного указания кодировки откройте файл с encoding='utf-8'.

Как форматировать вывод с подстановкой переменных?

Самый современный способ - f-строки (f'...{var}...')

name = 'Анна'
age = 25
print(f'Имя: {name}, Возраст: {age}')

Python file methods (методы работы с файлами в python)

Имя: Анна, Возраст: 25

File models in python (модели файлов в python)

Альтернативы: print('Имя: {}, Возраст: {}'.format(name, age)) или print('Имя: %s, Возраст: %d' % (name, age)).

Как вывести объект в его repr-представлении?

Используйте repr() внутри print или укажите преобразование в f-строке: f'{obj!r}'.

data = 'hello\nworld'
print(repr(data))

File handle python (обработка файлов в python)

'hello\nworld'

Python open file read (открытие файла для чтения в python)

Полезно для отладки, чтобы видеть escape-последовательности.

Как вывести данные без пробелов между аргументами?

Задать sep='':

print('a', 'b', sep='')

Python file position (позиционирование в файле python)

ab

Python line find (поиск строки в файле python)

Как вывести несколько значений в одну строку через цикл?

Использовать end=' ' или накопить строку и вывести один раз. Рекомендуется последнее для производительности.

for i in range(5):
print(i, end=' ') # неэффективно
print()

Python csv file (работа с csv файлами в python)

0 1 2 3 4 

Python работа с данными файла (работа с данными из файла в python)

Лучше:

print(' '.join(str(i) for i in range(5)))

Key files python (работа с ключевыми файлами в python)

0 1 2 3 4
- Python response file (сохранение ответа в файл в python)
- Python file stream (файловые потоки в python)
- ввод в файл python (ввод из файла в python)

Расширенные примеры использования print

Вывод в несколько файлов одновременно

Можно передать свой объект-обёртку, который пишет в несколько потоков.

Пример
import sys

class MultiWriter:
def __init__(self, *files):
self.files = files
def write(self, text):
for f in self.files:
f.write(text)

with open('out1.txt', 'w') as f1, open('out2.txt', 'w') as f2:
mw = MultiWriter(sys.stdout, f1, f2)
print('Логирование', file=mw)

Результат: строка появится и на экране, и в обоих файлах.

Вывод с подавлением перевода строки и буферизацией

В некоторых сценариях (анимация в консоли) требуется немедленный вывод без буферизации. Используйте аргумент flush=True.

Пример
import time
for i in range(10):
print(i, end=' ', flush=True)
time.sleep(0.5)

Символы выводятся сразу, без ожидания заполнения буфера.

Форматирование с выравниванием и заполнением

f-строки поддерживают спецификаторы формата:

Пример
print(f'{'left':<10}|{'right':>10}')
print(f'{'center':^10}|{'center':^10}')
left      |     right
center | center

Полезно для таблиц.

Вывод с поддержкой цветов (ANSI escape)

На терминалах, поддерживающих ANSI, можно выводить цветной текст:

Пример
print('\033[91mКрасный текст\033[0m и обычный')

Результат: слово 'Красный текст' красного цвета.

Проблема:

В Windows может не работать без дополнительных настроек. Используйте модуль colorama для кроссплатформенности.

Вывод без кэширования при записи в канал (pipe)

При перенаправлении вывода в другой процесс Python может буферизовать вывод. Отключить буферизацию можно переменной окружения PYTHONUNBUFFERED=1 или флагом -u при запуске.

В коде:

Пример
import sys
sys.stdout.reconfigure(line_buffering=True) # Python 3.7+

Вывод с подавлением исключений при записи в закрытый поток

Иногда нужно безопасно попытаться вывести ошибку, даже если поток закрыт. Обёртка try-except:

Пример
def safe_print(*args, **kwargs):
try:
print(*args, **kwargs)
except (IOError, OSError):
pass

Вывод в sys.stderr для сообщений об ошибках

По умолчанию print пишет в sys.stdout. Для ошибок принято использовать sys.stderr:

Пример
import sys
print('Критическая ошибка', file=sys.stderr)

Это позволяет разделять обычный вывод и диагностику.

Вывод с использованием параметра flush для индикатора прогресса

Простая строка прогресса без перевода строки:

Пример
import time
for i in range(1, 101):
print(f'\rЗагрузка... {i}%', end='', flush=True)
time.sleep(0.03)
print('\nГотово!')

Символ \r возвращает каретку в начало строки, создавая эффект обновления.

Вывод с заменой стандартного вывода на файл временно

Контекстный менеджер для перенаправления stdout:

Пример
import sys
from contextlib import redirect_stdout

with open('out.txt', 'w') as f:
with redirect_stdout(f):
print('Это запишется в файл')
print('А это на экран')

Команда вывода на экран в Python (print) - comments

En
команда вывода на экран python (python)