Какая функция выводит что-либо в консоль Python

Обновлено: 21.11.2024

Я пытаюсь найти в python способ перенаправить журнал выполнения скрипта в файл, а также в стандартный вывод питоническим способом. Есть ли простой способ добиться этого?

8 ответов 8

Я придумал это [не проверено]

print>>xyz в python будет ожидать функцию write() в xyz . Вы можете использовать свой собственный пользовательский объект, который имеет это. Или же вы также можете указать, что sys.stdout ссылается на ваш объект, и в этом случае он будет преобразован даже без >>xyz .

Отлично. Это работает так, как я ожидал ... так как я новичок в программировании, пытаюсь немного понять ... как класс Tee вызывается при использовании команды Tee (sys.stdout, f), поскольку класс def включает только объект (может быть файловый объект)? пожалуйста, совет

Если вы спрашиваете, как именно вызывается запись... операции печати заканчиваются как sys.stdout.write(..) . Если sys.stdout указывает на объект, для которого определено .write(..), было бы вполне нормально.

Я нахожу это особенно полезным для написания быстрых генераторов LaTeX. @Thrustmaster Я сделал еще одну небольшую модификацию, опубликовал Gist. Спасибо за публикацию!

Это прекрасно работает, за исключением случаев использования подпроцесса. В моей основной функции я делаю это, затем вызываю функцию вне основной, которая вызывает подпроцесс, и вывод из подпроцесса не записывается в файл (хотя он записывается в стандартный вывод, как обычно)

Я просто хочу развить ответ Serpens и добавить строку:

Это позволит вам выбрать уровень регистрации сообщения.

Например, в примере с Змеями

Не будет записываться, так как по умолчанию записываются только предупреждения и выше.

Подробнее об используемых уровнях можно прочитать здесь

Вероятно, самое короткое решение:

Записывает "hello world" в sys.stdout и output.out и работает точно так же, как print().

Примечание. Не указывайте аргумент файла для функции printLog. Такие вызовы, как printLog('test',file='output2.out') не поддерживаются.

зависит от вашего варианта использования. если вы поместите printLog в часто повторяющийся цикл, это сильно повлияет на производительность. Но печатать там тоже не лучшая идея! Что может быть идеей, так это добавить некоторый буфер, чтобы просто записать 100 строк сразу в файл журнала. Это каким-то образом может противоречить идее вашего регистратора

Чтобы напечатать строки для консоли или отобразить некоторые данные для вывода консоли, используйте встроенную функцию Python print().

Функция print() может принимать различные типы значений в качестве аргументов, таких как строка, целое число, число с плавающей запятой и т. д., или объект типа класса.

Ниже приведена простая демонстрация использования функции print() в оболочке Python.

Как мы уже упоминали, вы можете передать строковый объект, число или любой другой тип данных в функцию print() в качестве аргумента для вывода на консоль.

Кроме того, обратите внимание, что вы можете передать один или несколько объектов или значений в качестве аргументов функции print(). Функция print() может обрабатывать все эти аргументы, используя параметры разделителя и конца, чтобы вывести их все на консоль. Мы подробно рассмотрим эти параметры функции print() в следующих примерах.

Но пока помните, что конечный параметр по умолчанию имеет значение символа новой строки. И это значение добавляется в конце печати. Или вы можете переопределить конечный символ по умолчанию, передав значение для конечного параметра.

Параметр разделителя по умолчанию имеет значение одиночного пробела. Когда вы указываете несколько значений для печати, разделитель будет использоваться для объединения этих значений и вывода на консоль.

Пример 1: вывод строки в консоль

В этом примере мы напечатаем строку для вывода на консоль. Передать строку в качестве аргумента функции print().

Программа Python

Ага! Этот оператор печати и есть вся программа. Запустите его из командной строки или терминала с помощью команды python. Или вы можете запустить его из блокнота Jupyter.

Вывод

Строка выводится на консоль, как показано ниже.

Пример 2: вывод числа на консоль

В этом примере мы передадим целое число (число) в качестве аргумента функции print() и выведем число на консоль.

Программа Python

Вывод

Любой тип данных, переданный функции печати, неявно преобразуется в строку и выводится на консоль. Следовательно, целое число, которое мы передали в качестве аргумента функции print(), сначала преобразуется в строку, а затем выводится на консоль.

Пример 3: вывод переменных в консоль

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

Программа Python

Вывод

Обратите внимание, что пробел выводится на консоль между x и y .

Пример 4: Python print() со специальным разделителем

Вы можете передать строку для именованного параметра sep, чтобы переопределить разделитель по умолчанию.

Программа Python

Вывод

x и y были выведены на консоль с указанным разделителем.

Пример 5. Печать Python с определенным концом

Мы уже знаем, что можем указать конечное значение для функции print(). Символ новой строки является окончанием по умолчанию для функции print() в Python. Вы можете переопределить это, передав строку в конец именованного параметра, как показано в приведенной ниже программе Python.

Программа Python

Вывод

Видеоруководство

Обзор

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

Каждая запущенная программа имеет область вывода текста, которая называется "стандартный вывод", а иногда просто "стандартный вывод". Функция Python print() принимает данные Python, такие как целые числа и строки, и выводит эти значения на стандартный вывод.

Сказать, что стандартный вывод — это «текст», здесь означает серию строк, где каждая строка представляет собой серию символов с символом новой строки '\n', обозначающим конец каждой строки. Стандартный выход относительно прост. Это единая область текста, разделяемая всем кодом программы. Каждая напечатанная строка добавляется в конец.

Стандартный выход в терминале

Когда вы запускаете программу из терминала, тут же появляется стандартный вывод. Вот пример запуска вышеприведенного hello.py в терминале, и все, что он печатает, сразу появляется в терминале.

Функция печати

Функция Python print() принимает любое количество параметров и выводит их в одной строке текста. Элементы преобразуются в текстовую форму, разделяются пробелами, и в конце есть один символ '\n' (символ "новой строки"). При вызове с нулевыми параметрами print() просто печатает '\n' и больше ничего. В интерпретаторе стандартный вывод отображается на экране между подсказками '>>>', так что это простой способ увидеть, что делает функция print().

В исходном коде Python текст строки записывается в кавычках, например "Hello" , поэтому мы очень привыкли видеть эту форму. Обратите внимание, что при печати строки просто выводятся текстовые данные строки без кавычек:

Параметры печати sep=

По умолчанию print() разделяет элементы пробелами. Необязательный параметр sep= задает другой текст-разделитель.

Вариант печати end=

По умолчанию print() помещает одну "\n" после всех элементов. Необязательный параметр end= устанавливает пользовательскую строку, которая будет отображаться после всех элементов. Чаще всего это используется при печати строки, в конце которой уже есть '\n'. В этом случае печать строки заканчивается двойным интервалом вывода. Посмотрите, как после каждой напечатанной строки есть дополнительная пустая строка в этом примере:

Проблема в том, что строка имеет новую строку в конце, а затем print() добавляет вторую новую строку, поэтому мы получаем двойной интервал. Решение состоит в том, чтобы использовать end= для указания пустой строки в конце каждой строки.

Примечание к стилю: для необязательных параметров, таких как sep= и end=, как показано выше, стиль PEP8 исключает пробелы, которые обычно окружают = .

Печать и возврат

Думая о дизайне функции в виде черного ящика, return — это основной способ, с помощью которого функция возвращает результаты вызывающей стороне. Стандартный вывод — это вторичный способ передачи данных функцией, но он гораздо проще: стандартный вывод является текстовым (обычно) и используется всеми функциями.

Поэтому используйте возвращаемое значение в качестве основного, черного ящика для вывода данных и механизма тестирования функций. Стандартный вывод — это вторичная форма вывода функции, чаще всего используемая для вывода текста для пользователя в терминале.

Печать в файл

Очень распространенный случай — печать на стандартный вывод. Однако print() также работает с печатью в открытый файл.

Чтобы открыть файл для записи, добавьте «w» при вызове функции open() (показано ниже) — «w» для «записи». Это удалит все существующее содержимое этого файла, поэтому будьте осторожны при открытии для записи таким образом. Когда файл открыт, необязательный параметр file= для print() направляет текстовые строки в файл, а не записывает их в стандартный вывод.

Дионисия Лемонаки

Как распечатать информацию, это одна из первых вещей, которым вы научитесь, будучи начинающим программистом.

В этой статье рассказывается, что вам нужно знать о печати в Python, и мы рассмотрим множество примеров кода.

Начнем!

Для чего используется печать?

Печать — это, скорее всего, первое, чему вы научитесь, приступив к изучению Python.

Написание программы "Hello World" в качестве первых строк кода стало своего рода традицией. И вы делаете это, используя функцию print() для вывода этого фрагмента текста на консоль.

Печать в основном используется для вывода информации на консоль, будь то отображение определенного сообщения или результата вычислений. Но он также используется для целей отладки.

Печать в Python 2 и печать в Python 3

Чтобы напечатать что-то на консоли в Python 2, все, что вам нужно было сделать, это использовать ключевое слово print:

Это называлось оператором печати.

В Python 3 оператор печати был заменен функцией print().

Если вы не добавите набор открывающих и закрывающих скобок, следующих за print в Python 3, вы получите сообщение об ошибке при запуске кода:

Поэтому в Python 2 ключевое слово print было оператором, а в Python 3 print — функцией.

Синтаксис print() в Python

Полный синтаксис функции print() вместе со значениями принимаемых ею параметров по умолчанию показан ниже.

Вот как print() выглядит внутри:

Давайте разберем:

  • *object может быть ни одним, одним или несколькими значениями данных для печати и может быть любого типа данных. Перед печатью объекты преобразуются в строку.
  • sep — необязательный параметр, определяющий способ разделения нескольких объектов. По умолчанию используется ' ' – пробел.
  • end — необязательный параметр, указывающий, чем будет заканчиваться строка. По умолчанию вызов печати заканчивается символом новой строки, где \n является символом новой строки.
  • file — это необязательный параметр, который представляет собой объект с методом записи — он может записывать и добавлять (добавлять) вывод в файл. По умолчанию используется sys.stdout (или стандартный вывод системы), и вывод отображается на экране.
  • flush – это логический параметр, указывающий, будет ли поток принудительно очищен или помещен в буфер. Flushed означает, что вызов печати вступит в силу немедленно. Значение по умолчанию — False (или буферизовано).

Функция print() не имеет возвращаемого значения.

Как печатать объекты в Python

Даже если вы не передаете какие-либо аргументы функции print(), то есть не передаете никаких объектов для печати, вам все равно нужно включить набор пустых круглых скобок.

В таком случае это просто выведет на консоль пустую строку.

Это лучше всего проиллюстрировано при использовании Python REPL (Read Eval Print Loop).

Чтобы начать новый сеанс, после установки Python на вашем компьютере введите python3 . Когда вы закончите, введите exit(), чтобы завершить сеанс.

Это похоже на нажатие клавиши Enter на клавиатуре при письме в текстовом процессоре. Точно так же, как клавиша Enter создает новую строку и перемещает курсор на новую строку, точно так же вызов print() без аргументов отображает пустую строку.

Как печатать строки в Python

Вы печатаете строки, передавая строковый литерал в качестве аргумента функции print() , заключенный в одинарные или двойные кавычки.

Вывод будет строковым литералом без кавычек.

Если у вас есть заданная строка или фраза, которую вы хотите распечатать, вы можете сохранить ее в переменной и передать имя переменной в качестве аргумента функции print() .

Рекомендуется давать переменным осмысленные имена в соответствии с содержимым, хранящимся в них. Это сделает код более читаемым для вас и для всех, с кем вы работаете.

Как показано ранее в синтаксисе print(), в качестве аргументов может быть передано более одного объекта ( *object ).

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

Есть два аргумента: "Привет" и "Вот!".

В приведенных ниже примерах аргументами являются строковый литерал и переменная.

Это также можно сделать с помощью конкатенации с оператором сложения:

При конкатенации вы должны учитывать пробелы, иначе вы получите следующее:

Имейте в виду, что вы не можете добавить строковый литерал с числом.

Это приведет к ошибке:

Как следует из ошибки, вы можете только конкатенировать (добавлять) строку к строке. Это означает, что если вы хотите включить число, вам придется преобразовать его в строковый эквивалент путем приведения типов.

Современным способом печати объектов является использование f-строк .

Строки — не единственные объекты, которые можно передавать в качестве аргументов.

На самом деле print() принимает все типы данных, которые вы увидите в следующем разделе.

Примеры вывода остальных встроенных типов данных Python

Как изменить способ разделения объектов в функции print()

Как вы видели в синтаксисе функции print(), sep определяет, как один объект отделяется от другого.

По умолчанию объекты разделяются одним пробелом.

Чтобы отключить это, вы явно меняете значение sep на нужный вам символ.

Например, объекты могут быть разделены тире:

Или вы можете даже удалить пробел, добавив вместо него пустую строку:

Как удалить новую строку по умолчанию в print()

Как вы видели ранее в разборе синтаксиса функции print(), параметром по умолчанию для ключевого аргумента end было '\n' .

По умолчанию после каждого вызова печати создается новая строка.

Если вы вызовете print два раза по отдельности, один за другим, вы увидите, что второй вызов отображается на новой строке сразу после первого вызова.

Чтобы отключить это, вы можете явно изменить значение конца на пустую строку "" .

Теперь оба находятся на одной линии.

Вы даже можете изменить его на точку:

Все, что не является значением по умолчанию, подавляет создаваемую новую строку.

Как направить вывод print() в файл в Python

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

Однако могут быть случаи, когда вы захотите направить этот вывод в существующий файл.

Допустим, у вас есть текстовый файл, и вы хотите добавить текст с помощью функции print().

Чтобы открыть и записать файл в Python, вы вызываете функцию open(). Внутри вы указываете имя файла, в данном случае output.txt, и режим -w, означающий только запись.

В этом режиме каждый раз, когда вы запускаете свой код, содержимое файла будет удаляться и заменяться любым новым текстом, который вы добавляете.

Если вы не хотите терять какой-либо контент, вы можете вместо этого использовать режим -a для добавления текста в конец файла.

Внутри функции print() вы добавляете любой текст, который хотите добавить в файл, и устанавливаете параметр файла равным имени заполнителя, которое вы создали для файла, в который хотите добавить текст, в данном случае f .

Заключение

Спасибо, что прочитали и дочитали до конца! Я надеюсь, что вы нашли этот урок полезным. Теперь вы знаете основы использования функции print() в Python.

Если вы хотите узнать больше о языке программирования Python, ознакомьтесь с сертификацией Python от freeCodeCamp, чтобы начать работу.

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

Читайте также: