Изучаем функции Print в Python 3
Функция print в Python выводит заданные объекты на стандартное устройство вывода (экран) или отправляет их текстовым потоком в файл.
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
- objects – объект, который нужно вывести * обозначает, что объектов может быть несколько;
- sep – разделяет объекты. Значение по умолчанию: ‘ ‘;
- end – ставится после всех объектов;
- file – ожидается объект с методом write (string). Если значение не задано, для вывода объектов используется файл sys.stdout;
- flush – если задано значение True, поток принудительно сбрасывается в файл. Значение по умолчанию: False.
Примечание: sep, end, file и flush — это аргументы-ключевые слова. Если хотите воспользоваться аргументом sep, используйте:
print(*objects, sep = 'separator')
а не
print(*objects, 'separator')
Функция print в Python не возвращает значений; возвращает None.
print("Python — это весело.")
a = 5 # Передаётся два объекта print("a =", a) b = a # Передаётся три объекта print('a =', a, '= b')
При запуске программы получаем:
Python — это весело. a = 5 a = 5 = b
В примере, приведенном выше функции print Python 3, во всех трёх выражениях передаётся только параметр objects, поэтому:
- Используется разделитель ‘ ‘ — обратите внимание на пробел между двумя объектами в результатах вывода;
- В качестве параметра end используется ‘\n’ (символ новой строки). Обратите внимание, что каждое выражение print выводится в новой строке;
- file — используется файл sys.stdout. Результат выводится на экран;
- Значение flush — False. Поток не сбрасывается принудительно.
a = 5 print("a =", a, sep='00000', end='\n\n\n') print("a =", a, sep='0', end='')
При запуске программы получаем:
Мы передали в программу, пример которой приведен выше, параметры sep и end.
С помощью Python print без перевода строки также можно вывести объекты в файл, указав параметр file:
sourceFile = open('python.txt', 'w') print("Круто же, правда?", file = sourceFile) sourceFile.close()
Код, приведенный выше, пытается открыть файл python.txt в режиме записи. Если файл не существует, программа создаёт файл python.txt и открывает его в режиме записи.
В примере мы передали в параметр file объект sourceFile. Объект-строка ‘Круто же, правда?‘ записывается в файл python.txt (после чего можно открыть его текстовым редактором).
В конце исполнения программы файл закрывается методом close().
Данная публикация является переводом статьи «Python print()» , подготовленная редакцией проекта.
Функции Print() в Python
Функция print Python выводит заданные объекты на стандартное устройство вывода (экран) или отправляет их текстовым потоком в файл.
Полный синтаксис функции print():
- print(*objects, sep=’ ‘, end=’n’, file=sys.stdout, flush=False)
Параметры print()
- objects – объект, который нужно вывести * обозначает, что объектов может быть несколько;
- sep – разделяет объекты. Значение по умолчанию: ‘ ‘;
- end – ставится после всех объектов;
- file – ожидается объект с методом write (string). Если значение не задано, для вывода объектов используется файл sys.stdout;
- flush – если задано значение True, поток принудительно сбрасывается в файл. Значение по умолчанию: False.
Примечание: sep, end, file и flush — это аргументы-ключевые слова. Если хотите воспользоваться аргументом sep, используйте:
- print(*objects, sep = ‘separator’)
а не
- print(*objects, ‘separator’)
Возвращаемое значение
Функция Python print не возвращает значений; возвращает None.
Пример 1: Как работает функция print() в Python?
- a = 5
- # Передаётся два объекта
- print(«a =», a)
- b = a
- # Передаётся три объекта
- print(‘a =’, a, ‘= b’)
При запуске программы получаем:
- Python — это весело.
- a = 5
- a = 5 = b
В примере, приведенном выше функции print Python 3, во всех трёх выражениях передаётся только параметр objects, поэтому:
- Используется разделитель ‘ ‘ — обратите внимание на пробел между двумя объектами в результатах вывода;
- В качестве параметра end используется ‘n’ (символ новой строки). Обратите внимание, что каждое выражение print выводится в новой строке;
- file — используется файл sys.stdout. Результат выводится на экран;
- Значение flush — False. Поток не сбрасывается принудительно.
Пример 2: print() с разделителем и параметром end
- a = 5
- print(«a =», a, sep=’00000′, end=’nnn’)
- print(«a =», a, sep=’0′, end=»)
При запуске программы получаем:
Мы передали в программу, пример которой приведен выше, параметры sep и end.
Пример 3: print() с параметром file
С помощью Python print без перевода строки также можно вывести объекты в файл, указав параметр file:
- sourceFile = open(‘python.txt’, ‘w’)
- print(«Круто же, правда?’, file = sourceFile)
- sourceFile.close()
Код, приведенный выше, пытается открыть файл python.txt в режиме записи. Если файл не существует, программа создаёт файл python.txt и открывает его в режиме записи.
В примере мы передали в параметр file объект sourceFile. Объект-строка ‘Круто же, правда?‘ записывается в файл python.txt (после чего можно открыть его текстовым редактором).
В конце исполнения программы файл закрывается методом close().
Перевод статьи “Python print()” был подготовлен дружной командой проекта Сайтостроение от А до Я.
функция print и параметр end
Функция print() используется для печати сообщения на экране. Давайте поподробнее рассмотрим ее и то как с ней можно работать в этой статье!
Начнем с простого примера:
print("Hello world!")
print("Hello world!")
print("I\'m fine!")
a = 10
b = 10.23
c = "Hello"
print(a)
print(b)
print(c)
print("Value of a = ", a)
print("Value of b = ", b)
print("Value of c = ", c)
Hello world!Hello world!
I'm fine!
10
10.23
Hello
Value of a = 10
Value of b = 10.23
Value of c = Hello
Смотрите выходные данные вышеприведенной программы, функция print()
заканчивается новой строкой, а результат следующей функции
— печать новой строки (следующая строка).
Параметр end в print()
end — необязательный параметр в функции print()
, и его значением по умолчанию является \n
, что означает, что print() по умолчанию заканчивается новой строкой. Мы можем указать любой символ / строку как конечный символ функции print() .
print("Hello friends how are you?", end = ' ')
print("I am fine!", end ='#')
print() # prints new line
print("ABC", end='')
print("PQR", end='\n') # ends with a new line
print("This is line 1.", end='[END]\n')
print("This is line 2.", end='[END]\n')
print("This is line 3.", end='[END]\n')
И в консоли мы получим:
Hello friends how are you? I am fine!#
ABCPQR
This is line 1.[END]
This is line 2.[END]
This is line 3.[END]
Интерактивный учебник языка Python
Python 3 — это современный язык, на котором просто и приятно писать программы.
Для печати значений в Питоне есть функция print(). Внутри круглых скобок через запятую мы пишем то, что хотим вывести. Вот программа, которая делает несколько вычислений:
print(5 + 10) print(3 * 7, (17 - 2) * 8) print(2 ** 16) # две звёздочки означают возведение в степень print(37 / 3) # один слэш — это деление с ответом-дробью print(37 // 3) # два слэша считают частное от деления нацело # это как операция div в других языках print(37 % 3) # процент считает остаток от деления нацело # это как операция mod в других языках
Для ввода данных в программу мы используем функцию input()
. Она считывает одну строку.
Вот программа, которая считывает имя пользователя и приветствует его:
Пётр
print('Как вас зовут?') name = input() # считываем строку и кладём её в переменную name print('Здравствуйте, ' + name + '!')
Мы будем писать программы, которые считывают данные, перерабатывают их и выводят какой-то результат. При запуске на компьютере такие программы считывают данные, которые пользователь вводит с клавиатуры, а результат выводят на экран.
Попробуем написать программу, которая считывает два числа и выводит их сумму. Для этого считаем два числа и сохраним их в переменные a
и b
, пользуясь оператором присваивания =
. Слева от оператора присваивания в программах на Питоне ставится имя переменной — например, строка из латинских букв. Справа от оператора присваивания ставится любое выражение. Имя станет указывать на результат вычисления выражения. Проиграйте эту программу и посмотрите на результаты её работы:
5 7
a = input() b = input() s = a + b print(s)
Мы видим, что программа выводит 57
, хотя в реальной жизни 5 + 7
будет 12
. Это произошло потому, что Питон в третьей строчке «сложил» две строки, а не два числа. В Питоне две строки складываются так: к первой строке приписывается вторая.
Обратите внимание, что в визуализаторе содержимое переменных a
и b
заключено в кавычки. Это означает, что в a
и b
лежат строки, а не числа.
В Питоне все данные называются объектами. Число 2 представляется объектом «число 2», строка 'hello'
– это объект «строка 'hello'
».
Каждый объект относится к какому-то типу. Строки хранятся в объектах типа str
, целые числа хранятся в объектах типа int
, дробные числа (вещественные числа) — в объектах типа float
. Тип объекта определяет, какие действия можно делать с объектами этого типа. Например, если в переменных first
и second
лежат объекты типа int
, то их можно перемножить, а если в них лежат объекты типа str
, то их перемножить нельзя:
first = 5 second = 7 print(first * second) first = '5' second = '7' print(first * second)
Чтобы преобразовать строку из цифр в целое число, воспользуемся функцией int()
. Например, int('23')
вернет число 23
.
Вот пример правильной программы, которая считывает два числа и выводит их сумму:
5 7
a = int(input()) b = int(input()) s = a + b print(s)
Ссылки на задачи доступны в меню слева. Эталонные решения теперь доступны на странице самой задачи.
Как работает функция Python «print»?
Мне интересно, как функция печати Python определяет, что такое кодировка строки, и как с ней обращаться?
Например у меня есть строка:
str1 = u'\u041e\u0431\u044a\u0435\u043c
print(str1) # Will be converted to Объем`
Что происходит под капотом python?
Обновление
Меня интересует CPython 2.7 реализация python
Поделиться Источник latsha 05 января 2017 в 10:31
2 ответа
- Как работает функция print()?
Скажем, у меня есть класс элементов class Element(object): def __init__(self,key,val): self.key = key self.val = val def __str__(self): return ‘(‘ + str(self.key) + ‘,’ + str(self.val) + ‘)’ Теперь, когда я пытаюсь напечатать массив, содержащий объекты класса Element arr =…
- Python: функция GUI с ‘print’ больше не работает после закрытия окна terminal
У меня есть приложение Python GUI для Ubuntu, которое также печатает сообщения на terminal. Меню GUI ‘Quit’ выглядит следующим образом: def quit(): print(‘exiting’) Gtk.main_quit() Если я запускаю свое приложение в фоновом режиме и выхожу из terminal, когда приложение все еще работает,…
1
Он использует кодировку в sys.stdout.encoding
, которая исходит из среды, в которой он работает.
Поделиться wong2 05 января 2017 в 10:34
0
u
перед строкой имеет значение. ‘u
‘ перед строковыми значениями означает, что строка была представлена в виде Юникода. Это способ представить больше символов, чем может сделать обычный ascii.
Кодировка по умолчанию для исходного кода Python — UTF-8, поэтому вы можете просто включить символ Юникода в строковый литерал.
Более подробная информация здесь
Поделиться Inconnu 05 января 2017 в 10:36
Похожие вопросы:
Убедитесь, что функция использует print-function в python
Я хочу написать декоратор в python : если вызываемая функция содержит print ‘s, то декоратор печатает ее имя перед вызовом этой функции. Я знаком с синтаксисом декораторов, но у меня есть проблема с…
Python 3 print() функция
Я пытаюсь получить упражнение из книги python 2 для работы в python 3. 1 def printMultiples(n): 2 i = 1 3 while i <= 6: 4 print(n*i, ‘/t’,) 5 i = i + 1 6 print() Моя проблема-строка 5. Я понимаю,…
Python глобальная функция типа ‘print’
Я ищу, чтобы сделать глобальную функцию в python 3.3, как функция печати. В частности, мы встроили python в наше собственное приложение и хотим предоставить простую глобальную функцию…
Как работает функция print()?
Скажем, у меня есть класс элементов class Element(object): def __init__(self,key,val): self.key = key self.val = val def __str__(self): return ‘(‘ + str(self.key) + ‘,’ + str(self.val) + ‘)’ Теперь,…
Python: функция GUI с ‘print’ больше не работает после закрытия окна terminal
У меня есть приложение Python GUI для Ubuntu, которое также печатает сообщения на terminal. Меню GUI ‘Quit’ выглядит следующим образом: def quit(): print(‘exiting’) Gtk.main_quit() Если я запускаю…
python функция не работает как поток
это делается в python 2.7.12 serialHelper — это модуль класса arround python serial, и этот код действительно хорошо работает #!/usr/bin/env python import threading from time import sleep import…
Считается ли функция print() в python пустой функцией?
Как следует из названия, является ли функция print() в python функцией void? Я думал, что функция print() возвращает и печатает на экран то, что в нее передается. Теперь, когда я думаю об этом,…
Как работает эта фабричная функция python
Это функция python из моего класса pluralsight python: def raise_to(exp): def raise_to_exp(x): return pow(x, exp) return raise_to_exp А теперь инструктор открывает интерактивную сессию и делает…
Как функция внутри функции работает в python
Я новый ученик python и начинаю с некоторых упражнений на струнах. И мне интересно, как на самом деле работает функция заменить в matchcase . import re a = ‘UPPER PYTHON, lower python, Mixed…
Как я могу использовать функцию python print() в 2.7.12?
Я знаю, что print -это функция в Python 3 и оператор в Python 2 . Найти здесь Я тестировал местных и онлайн переводчиков с нижеприведенным кодом В Python 3 : print(‘test’) — работает нормально print…
Ввод и вывод — Учебник по языку Python 3.1
Ввод и вывод
Ознакомить пользователя с выводом программы можно различными способами — данные могут быть выведены в читабельном виде или записаны в файл для последующего использования. Часть возможностей будет обсуждена в этой главе.
Удобное форматирование вывода
На данный момент мы выяснили два способа вывода значений: операторные выражения (expression statements) и функция print()
. (Третий способ — использование метода write()
объектов файлов; на файл стандартного вывода можно сослаться как на sys.stdout
. Более подробную информацию по этому пункту смотрите в Справочнике по библиотеке.)
Часто возникает желание иметь больший контроль над форматированием вывода, чем обычная печать значений разделённых пробелами. Есть два способа форматирования вашего вывода. Первый способ — выполнять самостоятельно всю работу над строками: используя срезы строк и конкатенацию вы можете создать любой шаблон, какой пожелаете. Стандартный модуль string
содержит много полезных операций для выравнивания строк по определённой ширине колонки (скоро мы их кратко рассмотрим). Второй способ — использование метода str.format()
.
Модуль string
содержит класс Template
, который предоставляет ещё один способ подстановки значений в строки.
Остаётся, конечно, один вопрос: каким образом конвертировать значения в строки? К счастью, в Python есть два способа для преобразования любого значения в строку — это функции repr()
и str()
.
Предназначение функции str()
— возврат значений в довольно-таки читабельной форме; в отличие от repr()
, чьё назначение — генерирование форм, которые могут быть прочитаны интерпретатором (или вызовут ошибку SyntaxError
, если эквивалентного синтаксиса не существует). Для тех объектов, у которых нет формы для человеческого прочтения функция str()
возвратит такое же значение, как и repr()
. У многих значений, таких как числа или структуры, вроде списков и словарей, одинаковая форма для обоих функций. Строки и числа с плавающей точкой, в частности, имеют по две разных формы.
Несколько примеров:
>>> s = 'Привет, мир.' >>> str(s) 'Привет, мир.' >>> repr(s) "'Привет, мир.'" >>> str(0.1) '0.1' >>> repr(0.1) '0.10000000000000001' >>> x = 10 * 3.25 >>> y = 200 * 200 >>> s = 'Значение x - ' + repr(x) + ', а y - ' + repr(y) + '...' >>> print(s) Значение x - 32.5, а y - 40000... >>> # Фунция repr(), применённая к строке, добавляет кавычки и обратные слэши: ... hello = 'привет, мир\n' >>> hellos = repr(hello) >>> print(hellos) 'привет, мир\n' >>> # Параметром функции repr() может быть объект Python: ... repr((x, y, ('фарш', 'яйца'))) "(32.5, 40000, ('фарш', 'яйца'))"
Вот два способа вывести таблицу квадратов и кубов:
>>> for x in range(1, 11): ... print(repr(x).rjust(2), repr(x*x).rjust(3), end=' ') ... # Обратите внимание на использование end в предыдущей строке ... print(repr(x*x*x).rjust(4)) ... 1 1 1 2 4 8 3 9 27 4 16 64 5 25 125 6 36 216 7 49 343 8 64 512 9 81 729 10 100 1000 >>> for x in range(1, 11): ... print('{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x)) ... 1 1 1 2 4 8 3 9 27 4 16 64 5 25 125 6 36 216 7 49 343 8 64 512 9 81 729 10 100 1000
(Обратите внимание, что в первом примере единичные пробелы между колонками добавлены функцией print()
: она всегда вставляет пробелы между своими параметрами)
Этот пример демонстрирует работу метода строковых объектов rjust()
, выравнивающего строку по правому краю в поле переданной ширины, отступая пробелами слева. Имеются также похожие методы ljust()
и center()
. Эти методы не выводят ничего, они лишь возвращают новую строку. Если строка на входе чересчур длинная, то они не усекают её, что обычно является меньшим из зол. (Для усечения можно добавить операцию среза, например: x.ljust(n)[:n]
.)
Есть другой метод — zfill()
, который заполняет нулями пространство слева от числовой строки. Он распознаёт знаки плюс и минус:
>>> '12'.zfill(5) '00012' >>> '-3.14'.zfill(7) '-003.14' >>> '3.14159265359'.zfill(5) '3.14159265359'
Основной способ применения метода str.format()
выглядит так:
>>> print('Мы — те {0}, что говорят "{1}!"'.format('рыцари', 'Ни')) Мы — те рыцари, что говорят "Ни!"
Скобки с символами внутри (их называют полями форматирования (format fields)) заменяются на объекты, переданные методу format
. Номер в скобках обозначает позицию объекта в списке параметров, переданных методу format
.
>>> print('{0} и {1}'.format('фарш', 'яйца')) фарш и яйца >>> print('{1} и {0}'.format('фарш', 'яйца')) яйца и фарш
Если в методе format
используются именованные параметры, можно ссылаться на их значения, используя имя соответствующего аргумента.
>>> print('Этот {food} — {adjective}.'.format( ... food='фарш', adjective='непередаваемо ужасен')) Этот фарш — непередаваемо ужасен.
Позиционные и именованные параметры можно произвольно совмещать:
>>> print('История о {0}е, {1}е, и {other}е.'.format('Билл', 'Манфред', other='Георг')) История о Билле, Манфреде, и Георге.
После имени поля может следовать необязательный спецификатор формата ‘:
’. С его помощью можно управлять форматированием значения. Следующий пример оставляет у числа Пи только три цифры после десятичного разделителя.
>>> import math >>> print('Значение ПИ — примерно {0:.3f}.'.format(math.pi)) Значение ПИ — примерно 3.142.
После спецификатора ‘:
’ можно указать число — минимальную ширину поля, выраженную в количестве символов. Это удобно использовать для создания красивых таблиц:
>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678} >>> for name, phone in table.items(): ... print('{0:10} ==> {1:10d}'.format(name, phone)) ... Jack ==> 4098 Dcab ==> 7678 Sjoerd ==> 4127
Если ваша строка с форматами очень длинна, а вы не хотите разбивать её на подстроки, было бы неплохо если бы вы могли ссылаться на переменные, предназначенные для форматирования, не по позиции, а по имени. Это можно сделать, просто передав словарь и используя квадратные скобки ‘[]’ для доступа к ключам.
>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678} >>> print('Jack: {0[Jack]:d}; Sjoerd: {0[Sjoerd]:d}; ' 'Dcab: {0[Dcab]:d}'.format(table)) Jack: 4098; Sjoerd: 4127; Dcab: 8637678
Тоже самое можно сделать, передав словарь именованных параметров, используя нотацию „**
“:
>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678} >>> print('Jack: {Jack:d}; Sjoerd: {Sjoerd:d}; Dcab: {Dcab:d}'.format(**table)) Jack: 4098; Sjoerd: 4127; Dcab: 8637678
В частности, такой приём удобно использовать в сочетании со встроенной функцией vars()
, которая возвращает словарь с локальными переменными.
Подробное описание форматирования строк с применением метода str.format()
описано в разделе Синтаксис строк форматирования.
Форматирование строк в старом стиле
Для форматирования строк можно использовать и операцию %
. Она интерпретирует левый операнд как строку форматирования в стиле sprintf
, которую следует применить к правому операнду, и возвращает строку, получившуюся в результате этого преобразования. Например:
>>> import math >>> print 'Значение ПИ — примерно %5.3f.' % math.pi Значение ПИ — примерно 3.142.
Поскольку метод str.format()
довольно нов, большая часть исходных кодов Python всё ещё использует операцию %
. Однако, со временем, форматирование строк будет удалено из языка, поэтому в большинстве случаев следует использовать str.format()
.
Больше информации можно найти в разделе Операции форматирования строк в старом стиле.
Запись и чтение файлов
Функция open()
возвращает объект файла и в большинстве случаев используется с двумя аргументами: open(имя_файла, режим)
.
>>> f = open('/tmp/workfile', 'w')
Первый параметр — строка, содержащая имя файла. Второй — другая строка, содержащая несколько символов, описывающих способ использования файла. Значение параметра режим может быть символом 'r'
, если файл будет открыт только для чтения, 'w'
— открыт только для записи (существующий файл с таким же именем будет стёрт) и 'a'
— файл открыт для добавления: любые данные, записанные в файл автоматически добавляются в конец. 'r+'
открывает файл и для чтения, и для записи. Параметр режим необязателен: если он опущен — предполагается, что он равен 'r'
.
В обычном случае файлы открываются в текстовом режиме (text mode) — это значит что вы читаете из файла и записываете в файл строки в определённой кодировке (по умолчанию используется UTF-8). Если добавить к режиму файла символ ‘b
’, файл открывается в двоичном режиме (binary mode): теперь данные считываются и записываются в виде двоичных объектов. Этот режим следует использовать для всех файлов, которые не содержат текст.
При использовании текстового режима, все окончания строк, по умолчанию, специфичные для платформы (\n
в Unix, \r\n
в Windows) усекаются до символа \n
, при чтении из файла, и конвертируются обратно из \n
в вид, специфичный для платформы, при записи в файл. Эти закулисные изменения в файловых данных корректно работают в случае текстовых файлов, но испортят двоичные данные в файлах вроде JPEG
или EXE
. Внимательно следите за тем, чтобы использовать двоичный режим при чтении и записи таких файлов.
Методы объектов-файлов
В примерах ниже подразумевается, что заранее создан файловый объект с именем f
.
Чтобы прочитать содержимое файла, вызовите f.read(размер)
— функция читает некоторое количество данных и возвращает их в виде строки или байтового объекта. размер
— необязательный числовой параметр. Если размер
опущен или отрицателен, будет прочитано и возвращено всё содержимое файла; если файл по величине в два раза больше оперативной памяти вашего компьютера, то решение этой проблемы остаётся на вашей совести. В противном случае, будет прочитано и возвращено максимум размер
байт. Если был достигнут конец файла, f.read()
вернёт пустую строку ().
>>> f.read() 'Это всё содержимое файла.\n' >>> f.read() ''
f.readline()
читает одну строку из файла; символ новой строки (\n
) остаётся в конце прочитанной строки и отсутствует при чтении последней строки файла только если файл не оканчивается пустой строкой. За счёт этого возращаемое значение становится недвусмысленным: если f.readline()
возвращает пустую строку — достигнут конец файла, в то же время незаполненная строка, представленная посредством '\n'
, содержит лишь символ новой строки.
>>> f.readline() 'Это первая строка файла.\n' >>> f.readline() 'Вторая строка файла\n' >>> f.readline() ''
f.readlines()
возвращает список, содержащий все строки с данными, обнаруженные в файле. Если передан необязательный параметр подсказка_размера
, функция читает из файла указанное количество байт, плюс некоторое количество байт сверх того, достаточное для завершения строки, и формирует список строк из результата. Функция часто используется для более эффективного (файл не загружается в память полностью) построчного чтения больших файлов. Возвращены будут только полные (завершённые) строки.
>>> f.readlines() ['Это первая строка файла.\n', 'Вторая строка файла\n']
Альтернативный способ построчного чтения — организация цикла по файловому объекту. Он быстр, рационально использует память и имеет простой код в результате:
>>> for line in f: print(line, end='') Это первая строка файла. Вторая строка файла
Альтернативный способ проще, но не предоставляет тонкого контроля над происходящим. Поскольку оба этих способа работают с буферизацией строк по-разному, их не следует смешивать.
f.write(строка)
записывает содержимое строки в файл и возвращает количество записанных байтов.
>>> f.write('This is a test\n') 15
Чтобы записать в файл нечто отличное от строки, предварительно это нечто нужно в строку сконвертировать:
>>> value = ('ответ', 42) >>> s = str(value) >>> f.write(s) 18
f.tell()
возвращает целое, представляющее собой текущую позицию в файле f
, измеренную в байтах от начала файла. Чтобы изменить позицию объекта-файла, используйте f.seek(смещение, откуда)
. Позиция вычисляется прибавлением смещения к точке отсчёта; точка отсчёта выбирается из параметра откуда
. Значение 0
параметра откуда
отмеряет смещение от начала файла, значение 1
применяет текущую позицию в файле, а значение 2
в качестве точки отсчёта использует конец файла. Параметр откуда
может быть опущен и по умолчанию устанавливается в 0
, используя начало файла в качестве точки отсчёта.
>>> f = open('/tmp/workfile', 'rb+') >>> f.write(b'0123456789abcdef') 16 >>> f.seek(5) # Перейти к шестому байту в файле 5 >>> f.read(1) b'5' >>> f.seek(-3, 2) # Перейти к третьему байту с конца 13 >>> f.read(1) b'd'
При работе с текстовыми файлами (открытыми без символа b
в строке режима), выполнять позиционирование (seek
) позволяется только от начала файла (за исключением прокрутки в конец файла с использованием seek(0, 2)
).
Когда вы закончили все действия над файлом, вызовите f.close()
чтобы закрыть его и освободить все системные ресурсы, использованные при открытии этого файла. Все попытки использовать объект-файл после вызова f.close()
приведут к возникновению исключения.
>>> f.close() >>> f.read() Traceback (most recent call last): File "<stdin>", line 1, in ? ValueError: I/O operation on closed file
Считается хорошей манерой использовать ключевое слово with
при работе с файловыми объектами. Преимущество этого способа в том, что файл всегда корректно закрывается после выполнения блока, либо если при выполнении было порождено исключение. Кроме того, получающийся код намного короче, чем эквивалентная форма с блоками try
—finally
:
>>> with open('/tmp/workfile', 'r') as f: ... read_data = f.read() >>> f.closed True
У объектов-файлов есть ещё несколько дополнительных методов, таких как isatty()
и truncate()
, которые используются не так часто; обратитесь к Справочнику по библиотеке для более полного обзора по файловым объектам.
Модуль
pickle
Строки могут с лёгкостью быть записаны в файл и прочитаны из файла. В случае чисел нужно применить несколько больше усилий: метод read()
возвращает только строки, которые придётся передать функции вроде int()
, которая принимает строку вида '123'
и возвращает её числовое значение: 123
. Однако если вы намереваетесь сохранить более сложные типы данных, такие как списки, словари или экземпляры классов, всё становится несколько запутаннее.
Вместо того чтобы принуждать программиста постоянно писать и отлаживать код для замысловатых типов данных, Python предоставляет стандартный модуль под названием pickle
. Это замечательный модуль, который может принять любой объект Python (даже некоторые формы кода на Python!) и конвертировать его в строковое представление: этот процесс называется консервацией (pickling). Восстановление объекта из его строкового представления называется расконсервацией (unpickling): строка, описывающая объект, может быть сохранена в файл, добавлена к некоторым данным, или отослана через соединение по сети на удаленный компьютер.
Если у вас есть некоторый объект x
и объект файла f
, открытый на запись в двоичном режиме (binary mode, с параметром ‘wb’), простейший способ законсервировать объект требует одной-единственной строки кода:
Чтобы снова расконсервировать объект, при условии что f
— объект файла, открытого для чтения (так же в двоичном режиме, с параметром ‘rb’):
(Существуют варианты выполнения этих операций, применяемые при расконсервации нескольких объектов или когда вам требуется записать консервированные данные в файл; обратитесь к документации по модулю pickle из Справочника по библиотеке.)
pickle — стандартный способ для создания объектов Python, которые могут быть повторно использованы другими программами или будущими версиями этой же программы; для них есть технический термин — устойчивый объект (persistent object). Поскольку pickle используется часто, многие авторы расширений для Python заботятся о том, чтобы новые типы данных, такие как матрицы, могли быть корректно законсервированы и расконсервированы.
чисел и текста с помощью консоли — Пример программы
Все существующие программы и приложения так или иначе взаимодействуют с пользователем. Для этого они получают от пользователя данные, обрабатывают их и выводят что-то в ответ. В приложениях, не взаимодействующих с пользователем, нет смысла.
В Python встроены мощные инструменты для форматированного ввода и вывода, достаточные для реализации взаимодействия с пользователем в полноценном приложении.
Получение данных input
Получение данных — один из важнейших компонентов любой программы. Например, простой калькулятор получает данные от пользователя, когда тот вводит с клавиатуры числа, нажимает на элементы интерфейса калькулятора, даже вставляет скопированное выражение.
Входные данные в Python 3 обычно сохраняются в переменных или списках, чтобы их можно было обработать. Синтаксис операции ввода выглядит так:
a = input()
Если выполнить данный код в интерактивном режиме в IDLE, курсор переместиться новую строку и программа будет ожидать ввода данных, которые будут записаны в переменную a
.
Кроме того, оператор input()
позволяет перед запросом ввода вывести какой-либо текст, например:
a = input("Введите своё имя")
Таким образом можно дать подсказку пользователю, что нужно ввести. В отличие от строго типизированных языков программирования Python позволяет вводить любые типы данных без их явного указания. То есть пользователь может ввести как строку, так и число. Синтаксис команды ввода от этого не изменится.
Однако, часто нужно получить данные определенного типа, например, калькулятор ожидает число, а пользователь вводит строку. Для этого используется приведение типа, в данном случае к целочисленному:
a = int(input("Введите целое число"))
Если пользователь введет строку или дробь, интерпретатор Python возбудит исключение. Поэтому для ввода используют оператор try-except:
try: a = int(input("Введите целое число")) except: print("Ошибка, введено не целое число")
Дополнительно про проверку, введено ли число, можно прочитать в отдельной статье.
Также можно запрашивать ввод в бесконечном цикле, выход из которого осуществляется только тогда, когда пользователь вводит данные нужного типа:
while True: try: a = int(input("Введите целое число: ")) except: print("Вы ввели не целое число, ошибка") continue break
Вывод данных print
Вывод используется не только для отображения данных на экране, но и для перенаправления вывода одной программы на ввод другой, или для записи вывода в файл и т. д.
Для вывода данных в Python используется функция print(). С её помощью можно выводить строки, числа, последовательности. Её синтаксис выглядит так:
print("Строка") print(5)
Интерпретатор Python также позволяет передавать в print() другую функцию:
def sum(a, b): return a + b print(sum(5, 2)) # Выведет 7
В этом случае функция sum посчитает сумму аргументов и вернёт результат. Этот результат будет выведен с помощью print в консоль.
В print() можно передать несколько аргументов:
print("один", "два", 5) # Выведет "один два 5"
Кроме того, строки можно складывать с помощью оператора «+»:
print("один" + "два", 5) # Выведет "одиндва 5"
Однако не всегда нужно выводить что-то на экран. Программисты могут перенаправить вывод программы в файл. Функцию print() имеет необязательный параметр «file», который по умолчанию равен «sys.stdout», то есть выводу на экран. Если программист хочет перенаправить вывод в файл, он должен написать код:
f = open("file.txt", "w") # Открываем файл в режиме запись print("Строка", file = f) # Выводим "Строка" в файл
Кроме того, если нужно сделать красивое оформление вывода разными цветами, то можно воспользоваться библиотекой colorama или termcolor. Подробно про цветной вывод описано в отдельной статье на сайте.
Пример программы
В программах ввод и вывод взаимосвязаны, например, пользователь вводит данные, программа обрабатывает их и выводит обратно на экран. Даже если программа не консольная, а с графическим интерфейсом, то если пользователь нажал на кнопку «Запустить», он всё равно ввел в программу данные, которые дали сигнал для выполнения какой-либо функции.
Приведём пример консольной программы, которая выполняет операции над числами. То есть осуществляет ввод и вывод данных в консоль на Python 3. Мы вводим два числа, выбираем операцию, которую надо совершить над ними: сложение, вычитание, умножение или деление. Программа вычисляет результат и выводит его.
# Операции над двумя числами def sum(a, b): return a + b def sub(a, b): return a - b def mult(a, b): return a * b def div(a, b): return a / b def main(): while True: try: #Вводим числа a = float(input("Введите первое число: ")) b = float(input("Введите второе число: ")) c = int(input("Номер операции:\n1) +\n2) -\n3) *\n4) /\n")) except: print("Нужно ввести число, попробуйте ещё раз ...\n") continue # Повторяем ввод, если введено не число break # Выходим из цикла, если числа введены правильно # Применяем нужную операцию в зависимости от ввода cond = {1 : sum(a, b), 2 : sub(a, b), 3 : mult(a, b), 4 : div(a, b)} # Выводим результат операции print(cond[c]) if __name__ == "__main__": main()
Вот пример работы:
Таким образом у нас получился консольный калькулятор. Как было написано выше, для красоты можно сделать ввод и вывод цветным, меняя цвет фона и вводимых символов.
Также на нашем сайте есть пример калькулятора с графическим интерфейсом. Для этого в ней была использована библиотека Tkinter.
Встроенные функции— документация Python 3.9.2
Откройте файл и верните соответствующий файловый объект. Если файл
не может быть открыт, возникает OSError
. Видеть
Чтение и запись файлов для получения дополнительных примеров использования этой функции.
файл — это объект, похожий на путь, дающий имя пути (абсолютное или
относительно текущего рабочего каталога) открываемого файла или
целочисленный файловый дескриптор файла, который нужно обернуть. (Если дескриптор файла
задано, он закрывается, когда возвращаемый объект ввода-вывода закрывается, если closefd установлено значение Ложь
.)
режим — это дополнительная строка, указывающая режим, в котором файл
открыт. По умолчанию это 'r'
, что означает открытие для чтения в текстовом режиме.
Другие общие значения: 'w'
для записи (усечение файла, если он
уже существует), 'x'
для эксклюзивного создания и 'a'
для добавления
(что на некоторых системах Unix означает, что все записи добавляются в конец
файл независимо от текущей позиции поиска).В текстовом режиме, если кодировка не указана, используемая кодировка зависит от платформы: locale.getpreferredencoding (False)
вызывается для получения текущей локали
кодирование. (Для чтения и записи сырых байтов используйте двоичный режим и оставьте кодировка не указана.) Доступные режимы:
Знак | Значение |
---|---|
| открыт для чтения (по умолчанию) |
| открыт для записи, сначала обрезка файла |
| открыто для монопольного создания, ошибка, если файл уже существует |
| открыто для записи, добавляется в конец файла, если он существует |
| двоичный режим |
| текстовый режим (по умолчанию) |
| открыт для обновления (чтение и запись) |
Режим по умолчанию — 'r'
(открыт для чтения текста, синоним 'rt'
).Режимы 'w +'
и 'w + b'
открывают и обрезают файл. Режимы 'r +'
и 'r + b'
открывают файл без усечения.
Как упоминалось в обзоре, Python различает двоичные
и текстовый ввод / вывод. Файлы, открытые в двоичном режиме (включая 'b'
в режиме аргумент) возвращает содержимое в виде байтов
объектов без какого-либо декодирования. В
текстовый режим (по умолчанию или когда 't'
включено в аргумент mode ),
содержимое файла возвращается как str
, байты были
сначала декодируется с использованием платформенно-зависимого кодирования или с использованием указанного кодировка , если задано.
Разрешен дополнительный символ режима, 'U'
, который больше не
имеет какой-либо эффект и считается устаревшим. Ранее он был включен
универсальные символы новой строки в текстовом режиме, которые стали поведением по умолчанию
в Python 3.0. См. Документацию
параметр новой строки для получения дополнительных сведений.
Примечание
Python не зависит от представления текста операционной системой. файлы; вся обработка выполняется самим Python и, следовательно, независимая платформа.
буферизация — необязательное целое число, используемое для установки политики буферизации. Пройдено 0 для выключения буферизации (разрешено только в двоичном режиме), 1 для выбора строки буферизация (может использоваться только в текстовом режиме) и целое число> 1, чтобы указать размер в байтах буфера фрагментов фиксированного размера. Если нет аргумента буферизации Учитывая, что политика буферизации по умолчанию работает следующим образом:
Двоичные файлы буферизуются фрагментами фиксированного размера; размер буфера выбирается с помощью эвристики, пытающейся определить «блокировку» основного устройства размер »и возвращается к
io.DEFAULT_BUFFER_SIZE
. Во многих системах размер буфера обычно составляет 4096 или 8192 байта.«Интерактивные» текстовые файлы (файлы, для которых
isatty ()
возвращаетTrue
) использовать буферизацию строки. Другие текстовые файлы используют политику описано выше для двоичных файлов.
кодировка — это имя кодировки, используемой для декодирования или кодирования файла.
Это следует использовать только в текстовом режиме. Кодировка по умолчанию — платформа.
зависимый (независимо от locale.getpreferredencoding ()
возвращает), но любой
кодировка текста, поддерживаемая Python
может быть использован. См. Модуль кодеков
.
список поддерживаемых кодировок.
ошибок — необязательная строка, определяющая способ кодирования и декодирования.
ошибки должны обрабатываться — это не может использоваться в двоичном режиме.
Доступны различные стандартные обработчики ошибок.
(перечислены в разделе «Обработчики ошибок»), хотя любые
имя обработки ошибок, которое было зарегистрировано с codecs.register_error ()
также допустим.Стандартные имена
включают:
'strict'
, чтобы вызвать исключениеValueError
, если есть ошибка кодировки. Значение по умолчаниюНет
имеет то же самое эффект.'ignore'
игнорирует ошибки. Обратите внимание, что игнорирование ошибок кодирования может привести к потере данных.'replace'
вызывает вставку маркера замены (например,'?'
) где есть искаженные данные.'surrogateescape'
будет представлять любые неправильные байты как код точек в области частного использования Unicode в диапазоне от U + DC80 до U + DCFF.Эти частные кодовые точки будут затем снова превращены в те же байты при использовании обработчика ошибокsurrogateescape
при записи данных. Это полезно для обработки файлов в неизвестная кодировка.'xmlcharrefreplace'
поддерживается только при записи в файл. Символы, не поддерживаемые кодировкой, заменяются символами ссылка на соответствующий символ XML& # nnn;
.'backslashreplace'
заменяет искаженные данные на обратную косую черту Python escape-последовательности.'namereplace'
(также поддерживается только при записи) заменяет неподдерживаемые символы управляющими последовательностями\ N {...}
.
новая строка управляет тем, как работает универсальный режим новой строки (это только
относится к текстовому режиму). Это может быть None
, ''
, '\ n'
, '\ r'
и '\ r \ n'
. Работает следующим образом:
При чтении ввода из потока, если перевод строки равен
Нет
, универсальный Режим новой строки включен.Строки на входе могут заканчиваться на'\ n'
,'\ r'
или'\ r \ n'
, и они переводятся в'\ n'
перед возвращаются вызывающему. Если это''
, универсальный режим новой строки включен, но окончания строк возвращаются вызывающему абоненту без перевода. Если оно имеет любое из других допустимых значений, строки ввода заканчиваются только заданная строка, и конец строки возвращается вызывающему абоненту без перевода.При записи вывода в поток, если новая строка равна
Нет
, любое'\ n'
написанные символы переводятся в системный разделитель строк по умолчанию,ос.linesep
. Если новая строка — это''
или'\ n'
, перевода нет происходит. Если новая строка — любое другое допустимое значение, любое'\ n'
написанные символы переводятся в заданную строку.
Если closefd равно Ложь
и был указан дескриптор файла, а не имя файла.
задано, базовый дескриптор файла будет оставаться открытым, когда файл
закрыто. Если указано имя файла closefd должно быть True
(по умолчанию)
в противном случае возникнет ошибка.
Можно использовать настраиваемый открыватель, передав вызываемый объект как opener . Лежащий в основе
файловый дескриптор для файлового объекта затем получается путем вызова opener с
( файл , флаги ). opener должен возвращать дескриптор открытого файла (передавая os.open
as opener дает функциональность, аналогичную прохождению Нет
).
Новый созданный файл не наследуется.
В следующем примере используется параметр dir_fd ос.open ()
, чтобы открыть файл, относящийся к заданному каталогу:
>>> импорт ОС >>> dir_fd = os.open ('somedir', os.O_RDONLY) >>> def opener (путь, флаги): ... вернуть os.open (путь, флаги, dir_fd = dir_fd) ... >>> с open ('spamspam.txt', 'w', opener = opener) как f: ... print ('Это будет записано в somedir / spamspam.txt', file = f) ... >>> os.close (dir_fd) # не допускать утечки файлового дескриптора
Тип файлового объекта, возвращаемого функцией open ()
.
зависит от режима.Когда open ()
используется для открытия файла в тексте
mode ( 'w'
, 'r'
, 'wt'
, 'rt'
и т. д.), он возвращает подкласс io.TextIOBase
(а именно io.TextIOWrapper
). При использовании
чтобы открыть файл в двоичном режиме с буферизацией, возвращаемый класс —
подкласс io.BufferedIOBase
. Точный класс варьируется: в прочтении
в двоичном режиме возвращается io.BufferedReader
; в записи двоичного кода и
добавить двоичные режимы, он возвращает io.BufferedWriter
, а в
режим чтения / записи, он возвращает io.BufferedRandom
. Когда буферизация
отключен, необработанный поток, подкласс io.RawIOBase
, io.FileIO
, возвращается.
См. Также модули обработки файлов, например, fileinput
, io
(где объявлено open ()
), os
, os.path
, tempfile
,
и шутил
.
Вызывает событие аудита открыть
с аргументами файл
, режим
, флаги
.
Режим Флаги
и
аргументов могли быть изменены или выведены из
исходный звонок.
Изменено в версии 3.3:
Добавлен параметр opener .
Добавлен режим
'x'
.
IOError
раньше вызывался, теперь это псевдонимOSError
.
FileExistsError
теперь возникает, если файл открывается в монопольном режиме. режим создания ('x'
) уже существует.
Устарело с версии 3.4, будет удалено в версии 3.10: Режим 'U'
.
Изменено в версии 3.5:
Если системный вызов прерывается и обработчик сигнала не вызывает исключение, функция теперь повторяет системный вызов вместо того, чтобы вызывать
InterruptedError
исключение (объяснение см. В PEP 475 ).Добавлен обработчик ошибок
namereplace
.
Python print ()
Полный синтаксис print ()
:
print (* объекты, sep = '', end = '\ n', file = sys.stdout, flush = False)
Параметры print ()
- объектов — объект печатается. * указывает, что может быть более одного объекта
- sep — объекты разделяются sep. Значение по умолчанию :
''
- конец — конец напечатан последний
- файл — должен быть объектом с методом записи (строковым).Если он не указан, будет использоваться
sys.stdout
, который печатает объекты на экране. - flush — Если True, поток принудительно очищается. Значение по умолчанию :
Ложь
Примечание: sep , end , file и flush являются аргументами ключевого слова. Если вы хотите использовать аргумент sep , вы должны использовать:
print (* объекты, sep = 'separator')
, а не
print (* объекты, 'разделитель')
Возвращаемое значение из print ()
Не возвращает никакого значения; возвращает Нет .
Пример 1. Как print () работает в Python?
print («Python - это весело.»)
а = 5
# Передаются два объекта
печать ("а =", а)
б = а
# Переданы три объекта
print ('a =', a, '= b')
Выход
Python - это весело. а = 5 а = 5 = б
В приведенной выше программе только объектов, параметр передается в функцию print ()
(во всех трех операторах печати).
Следовательно,
-
'' Используется сепаратор
.Обратите внимание на пространство между двумя объектами на выходе. - конец параметр
'\ n'
(символ новой строки) используется. Обратите внимание, что каждый оператор печати отображает вывод в новой строке. - файл — это
sys.stdout
. Результат распечатывается на экране. - флеш —
Ложь
. Поток не сбрасывается принудительно.
Пример 2: print () с разделителем и конечными параметрами
а = 5
print ("a =", a, sep = '00000', end = '\ n \ n \ n')
print ("a =", a, sep = '0', end = '')
Выход
а = 000005 а = 05
В приведенной выше программе мы передали параметры sep и end .
Пример 3: print () с параметром файла
В Python можно вывести объектов в файл, указав параметр файл .
Рекомендуемая литература: Python File I / O
sourceFile = open ('python.txt', 'ш')
print ('Довольно круто, да!', file = sourceFile)
sourceFile.close ()
Эта программа пытается открыть python.txt в режиме записи. Если этот файл не существует, python.txt создается и открывается в режиме записи.
Здесь мы передали объект файла sourceFile параметру file . Струнный объект «Довольно круто, да!» печатается в файл python.txt (проверьте его в своей системе).
Наконец, файл закрывается с помощью метода close ()
.
Python | Вывод с использованием функции print ()
Самый простой способ произвести вывод — использовать функцию print (), в которой вы можете передать ноль или более выражений, разделенных запятыми.Эта функция преобразует передаваемые вами выражения в строку перед записью на экран.
Синтаксис: print (value (s), sep = », end = ‘\ n’, file = file, flush = flush)
Параметры:
value (s): Any value, and as сколько угодно. Будет преобразовано в строку перед печатью
sep = ‘separator’: (Необязательно) Укажите, как разделять объекты, если их несколько. По умолчанию: »
end = ‘end’: (Необязательно) Укажите что напечатать в конце.По умолчанию: ‘\ n’
file: (Необязательно) Объект с методом записи. По умолчанию: sys.stdout
flush: (Необязательно) Логическое значение, указывающее, будет ли вывод сброшен (True) или буферизован (False). По умолчанию: False
Возвращает: Возвращает вывод на экран.
Хотя нет необходимости передавать аргументы в функцию print (), для нее требуется пустая скобка в конце, которая сообщает python выполнять функцию, а не вызывать ее по имени.Теперь давайте рассмотрим необязательные аргументы, которые можно использовать с функцией print ().
1. Строковые литералы
Строковые литералы в операторе печати python в основном используются для форматирования или проектирования того, как конкретная строка отображается при печати с использованием функции print ().
- \ n: Этот строковый литерал используется для добавления новой пустой строки при печати оператора.
- «»: Пустая кавычка («») используется для печати пустой строки.
Пример:
Python3
|
Выход:
GeeksforGeeks лучше всего подходит для контента DSA.
2. end = ”” заявление
Ключевое слово end используется для указания содержимого, которое должно быть напечатано в конце выполнения функции print (). По умолчанию установлено значение «\ n», что приводит к смене строки после выполнения оператора print ().
Пример:
Python3
|
Выход:
GeeksForGeeks - лучшая платформа для контента DSA GeeksForGeeks - лучшая платформа для контента DSA **
3.flush Аргумент
Операции ввода-вывода в python обычно буферизуются, то есть используются фрагментами. Здесь на помощь приходит flush, поскольку он помогает пользователям решить, нужно ли им буферизовать письменный контент или нет. По умолчанию установлено значение false. Если установлено значение true, вывод будет записан как последовательность символов один за другим. Этот процесс медленный просто потому, что легче писать кусками, чем писать по одному символу за раз. Чтобы понять вариант использования аргумента flush в функции print (), давайте рассмотрим пример.
Пример:
Представьте, что вы создаете таймер обратного отсчета, который каждую секунду добавляет оставшееся время в одну и ту же строку. Это будет выглядеть примерно так:
3 >>> 2 >>> 1 >>> Старт
Исходный код для этого будет выглядеть примерно так:
Python3
|
Итак, приведенный выше код добавляет текст без символа новой строки в конце, а затем засыпает на одну секунду после каждого добавления текста. В конце обратного отсчета он печатает Start и завершает строку. Если вы запустите код как есть, он подождет 3 секунды и сразу распечатает весь текст.Это потеря 3 секунд из-за буферизации фрагмента текста, как показано ниже:
Хотя буферизация служит определенной цели, она может привести к нежелательным эффектам, как показано выше. Чтобы противостоять той же проблеме, аргумент flush используется с функцией print (). Теперь установите для аргумента flush значение true и снова просмотрите результаты.
Python3
|
Выход:
4. Сепаратор
Функция print () может принимать любое количество позиционных аргументов. Эти аргументы могут быть отделены друг от друга с помощью разделителя «,» . Они в основном используются для форматирования нескольких операторов в одной функции print ().
Пример:
Python3
|
Выход:
Гики для гиков
5. аргумент файла
Вопреки распространенному мнению, функция print () не преобразует сообщения в текст на экране.Это выполняется низкоуровневыми уровнями кода, которые могут читать данные (сообщение) в байтах. Функция print () представляет собой интерфейс над этими уровнями, который делегирует фактическую печать потоку или файловому объекту . По умолчанию функция print () привязана к sys.stdout через аргумент файла.
Пример:
Python3
|
Выход:
'Привет, выродки !! \ n'
Пример: Использование функции print () в Python
Python3
|
GeeksForGeeks х = 5 GFG Python @ GeeksforGeeks
Внимание компьютерщик! Укрепите свои основы с помощью курса Python Programming Foundation и изучите основы.
Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS .
Руководств по программированию на Python
Функция печати и строки
Функция печати в Python — это функция, которая выводит в окно консоли все, что вы скажете, что хотите распечатать. На первый взгляд может показаться, что функция печати бесполезна для программирования, но на самом деле это одна из наиболее широко используемых функций во всем Python.Причина этого в том, что это отличный инструмент для отладки .
«Отладка» — это термин, используемый для поиска, удаления и исправления ошибок и ошибок в коде.
Если что-то не работает, вы можете использовать функцию печати, чтобы распечатать, что происходит в программе. Часто вы ожидаете, что определенная переменная будет чем-то одним, но вы не можете увидеть то, что видит программа. Если вы распечатаете переменную, вы можете увидеть, что то, что вы думали, было не так.
Вы можете следовать этому руководству с помощью видео и встроенной консоли, с помощью текста и консолей или с помощью собственной установки Python.
Далее, строки, что это такое? Строки — это просто «строки» текста, отсюда и название. Строки — это тип данных. Другой тип данных — целые числа.
Для развития видео, вот несколько примеров:
print («Одиночные цитаты») print ("двойные кавычки")
Мы печатаем строку.Обратите внимание, что кавычки — это одинарные кавычки. Вы можете использовать одинарные или двойные кавычки, но их нужно использовать вместе.
Пока мы говорим о строках и функции печати, было бы полезно обсудить конкатенацию. Конкатенация означает просто комбинацию вещей. Вы можете использовать «+» или «,» для соединения строк. Если вы используете «,», то у вас будет пробел между строками, которые вы соединили. Если вы используете знак «+», то строки будут соединены без пробелов.Вам нужно будет добавить один, если хотите.
Если вы используете «+» для соединения целых чисел и чисел с плавающей запятой, то вы выполните арифметическую операцию. Если вы используете «,», то они будут распечатаны отдельно, с пробелом.
print ('могу это сделать', 5)
print ('не могу этого сделать:' + 5)
Вы не можете использовать «+» для соединения строк с целыми или плавающими числами, вы должны использовать «,».
Также важно научиться заключать кавычки в строки.Вы можете поместить двойные кавычки внутри одинарных, одиночные внутри двойных или использовать обратную косую черту «\». Символ \ известен как escape-символ , и он «ускользает» от характеристики следующего символа и просто принимает его «визуальный» аспект.
Назначение «escape-символа» — избежать различных характеристик персонажей. Например, цитата «в строке может нанести ущерб. Возьмем, к примеру: x =» Он сказал: «Привет!» «
Да, это будет проблемой.Очевидно, есть много способов избежать этой конкретной проблемы, но один из них — использовать escape-символ:
x = «Он сказал: \» Привет! \ «»
Если вы введете print (x), вы не увидите escape-символов, а увидите кавычки. Иногда вы хотите также показать escape-символ:
x = «Управляющий символ — \»
Как бы вы могли это решить?
Вот несколько примеров правил котировки:
print ('Не могу этого сделать')
print («здесь у вас все получится»)
print («и здесь у вас будет успех»)
Также важно научиться заключать кавычки в строки.Вы можете поместить двойные кавычки внутри одинарных, одиночные внутри двойных или использовать обратную косую черту «\». Символ \ известен как «escape-символ», и он «ускользает» от характеристики следующего символа и просто принимает его «визуальный» аспект. Вот несколько примеров правил котировки:
Это пока что охватывает основы струнных инструментов.
Существует 2 викторины / вопроса (ов) для этого руководства. Зарегистрируйтесь до + = 1 , чтобы получить доступ к ним, загрузке видео и без рекламы.
Следующий учебник: Математика с Python
Запись в файл с помощью функции print () Python
Введение
Функция Python print ()
обычно используется для отображения текста либо в командной строке, либо в интерактивном интерпретаторе, в зависимости от того, как выполняется программа Python. Однако мы можем изменить его поведение, чтобы записывать текст в файл, а не в консоль.
В этой статье мы рассмотрим множество способов записи в файл с помощью функции print ()
.
Перенаправление вывода скрипта Python в терминал
Быстрый и грязный способ перенаправить вывод скрипта Python — прямо из командной строки во время выполнения скрипта.
Например, если у нас есть файл Python с именем hello.py
со следующим содержимым:
print ("Hallo") # Умышленно на немецком языке
Мы можем перенаправить вывод файла в оболочку, используя единственную правую угловую скобку:
$ python3 привет.py> output.txt
Если мы откроем только что созданный файл output.txt
, мы увидим следующее содержимое:
Привет
Однако при использовании этого метода весь вывод сценария записывается в файл. Часто бывает более гибко выполнить это перенаправление из самого скрипта Python.
Перенаправление стандартного выходного потока
В Python функция print ()
более гибкая, чем вы думаете. Он не был жестко запрограммирован таким образом, чтобы указанный текст можно было только записать на дисплей.Вместо этого он отправляет текст в место, называемое стандартным потоком вывода , также известным как stdout
.
Все системы UNIX имеют три основных канала — стандартный входной канал ( stdin
), стандартный выходной канал ( stdout
) и стандартный канал ошибок ( stderr
).
По умолчанию стандартный канал вывода указывает на интерактивное окно, используемое для выполнения программы, поэтому мы обычно видим текст, распечатанный на экране.Однако для удобства стандартный вывод может быть перенаправлен в другие места, например в файлы.
Если стандартный вывод перенаправляется в конкретный файл, текст, указанный в функции print ()
, будет записан в этот файл, а не отображаться на экране.
В Python ссылку на стандартный вывод можно получить с помощью объекта stdout
модуля sys
. Это файловый объект , что означает, что у него есть методы, которые позволяют Python читать и писать из него, как из реального файла.
Давайте посмотрим на пример, в котором мы меняем stdout
на файл:
импортная система
print ('Это сообщение будет отображаться на экране.')
original_stdout = sys.stdout # Сохранить ссылку на исходный стандартный вывод
с open ('filename.txt', 'w') как f:
sys.stdout = f # Измените стандартный вывод на созданный нами файл.
print ('Это сообщение будет записано в файл.')
sys.stdout = original_stdout # Сбросить стандартный вывод в исходное значение
Функция print ()
принимает указанный строковый аргумент, добавляет в конец символ новой строки и вызывает стандартный вывод .write ()
, чтобы записать его в стандартный вывод.
В приведенном выше примере мы сначала печатаем строку текста, как мы привыкли, которая будет отображаться в консоли при запуске файла. Затем мы переназначили stdout
нашему пользовательскому объекту файла — f
. Поскольку файловый объект имеет совершенно допустимый метод write ()
, наше напечатанное значение без проблем записывается в файл.
Обратите внимание, что перед изменением исходного значения стандартного вывода рекомендуется сохранять в переменной исходное значение.Таким образом мы можем сбросить стандартный вывод до исходного значения после того, как мы закончим, что поможет избежать путаницы.
Сохраним код в новый файл, printToFile.py
. А затем выполним:
$ python3 printToFile.py
В Терминале мы увидим следующий вывод:
Это сообщение будет отображаться на экране.
И сценарий создаст новый файл с именем filename.txt
со следующим содержимым:
Это сообщение будет записано в файл.
Вы успешно перенаправили данные из стандартного потока вывода в файл. Давайте посмотрим, как мы можем сделать это с другим популярным файловым объектом, предназначенным для ошибок программирования.
Перенаправление стандартного потока ошибок
В Python ошибки записываются в стандартный поток ошибок , также известный как stderr
. По умолчанию это также интерактивное окно, но его можно изменить с помощью объекта sys.stderr
. Если бы мы хотели вывести значения на stderr
, мы могли бы просто перенаправить sys.stdout
, чтобы указать на sys.stderr
.
Создайте файл с именем printToStderr.py
и добавьте следующий код:
импортная система
print ('Это сообщение будет отображаться через стандартный вывод.')
original_stdout = sys.stdout # Сохранить ссылку на исходный стандартный вывод
sys.stdout = sys.stderr # Перенаправить стандартный вывод на стандартную ошибку.
print ('Это сообщение будет отображаться при стандартной ошибке.')
sys.stdout = original_stdout # Сбросить стандартный вывод в исходное значение
Этот пример почти идентичен предыдущему, за исключением того, что вместо перенаправления стандартного потока вывода в файл мы перенаправляем его в стандартный поток ошибок.Если стандартный поток ошибок также был перенаправлен куда-то еще, вывод будет отправлен в это место, а не на экран.
Запустим этот файл:
$ python3 printToStderr.py
Наш вывод покажет:
Это сообщение будет отображаться через стандартный вывод.
Это сообщение будет отображаться через стандартную ошибку.
Хотя нам это может показаться обычным выводом, для компьютера он отображается через разные конвейеры.
Печать с использованием параметра «файл»
В предыдущих примерах мы явно перенаправили стандартный вывод на другой файловый объект, изменив объект stdout
. Однако для удобства мы можем сделать это непосредственно из функции print ()
, указав место вывода с помощью параметра файла :
Например, если бы мы хотели печатать прямо в файл, не изменяя stdout
всего скрипта, мы бы написали:
импортная система
print ('Это сообщение будет отображаться на экране.')
с open ('filename.txt', 'w') как f:
print ('Это сообщение будет записано в файл.', file = f)
Поскольку мы не возились с явным перенаправлением стандартного вывода, нам больше не нужно сбрасывать его до начального значения. В результате это предпочтительный способ записи в файл с помощью функции print ()
.
Примечание: Хотя имя параметра - файл
, помните, что он работает с любым файловым объектом. Например, если вы хотите печатать на stderr
, вы должны изменить оператор print ()
на:
print ('Это сообщение будет записано в stderr.', файл = sys.stderr)
Заключение
В этой статье мы обсудили перенаправление вывода функции Python print ()
с использованием различных методов. Эти методы включали перенаправление вывода сценария Python из командной строки, перенаправление стандартного вывода в сценариях Python и указание файлового объекта в параметре file
непосредственно в функции print ()
.
Об авторе
Эта статья написана Якобом Стопаком, разработчиком программного обеспечения и консультантом, страстно желающим помочь другим улучшить свою жизнь с помощью кода.Джейкоб является автором Руководства по основам кодирования для разработчиков, вводной книги, в которой рассматриваются основные концепции и инструменты кодирования. Он содержит главы по базовой компьютерной архитектуре, Интернету, командной строке, HTML, CSS, JavaScript, Python, Java, базам данных / SQL, Git и многому другому.
Python print () - JournalDev
Здравствуйте, ученики. В этом руководстве мы узнаем больше о функции печати Python. В нашем последнем уроке мы узнали о функции Python с плавающей запятой.
Python Print
Практически все наши предыдущие руководства содержат функцию Python print ()
.Но мы не обсуждали функцию печати Python в полной мере. Теперь мы это узнаем. Сначала мы должны знать об основной структуре функции печати Python. Это дано ниже;
Если вы читали наш учебник по функциям и аргументам Python, то, вероятно, у вас должно быть представление об этой функции.
значений
получает список неопределенных переменных. Таким образом, все значения, разделенные запятыми, будут находиться под списком значений . Поэтому, если вы добавите больше элементов, разделенных запятыми, вы получите результат, в котором все значения объединены, разделенные пробелом.Следующий пример расскажет вам об использовании простой функции печати Python.
# инициализировать 1-ю переменную
var1 = 1
# инициализировать вторую переменную
var2 = 'строка-2'
# инициализировать третью переменную
var3 = float (23,42)
печать (var1, var2, var3)
На выходе следующий код будет.
1 строка-2 23,42
Итак, сколько элементов вы хотите напечатать, просто объедините их в качестве аргументов.
Использование ключевого слова sep в функции печати Python
Если вы посмотрите пример из предыдущего раздела, вы заметите, что эти переменные разделены пробелом.Но вы можете настроить его в своем собственном стиле.
Предположим, в предыдущем коде вы хотите разделить значения с помощью подчеркивания (_). Затем вы должны передать подчеркивание в качестве значения ключевого слова sep . Следующая функция проиллюстрирует вам идею использования ключевого слова python print sep.
# initiaze 1-я переменная
var1 = 1
# инициализировать вторую переменную
var2 = 'строка-2'
# инициализировать третью переменную
var3 = float (23,42)
print (var1, var2, var3, sep = '_')
И вот так вы получите желаемый результат.
1_string-2_23.42
Python print end ключевое слово
Клавиша end функции печати задает строку, которую необходимо добавить после завершения печати.
По умолчанию ключ конец устанавливается символом новой строки. Поэтому после завершения печати всех переменных добавляется символ новой строки. Следовательно, мы получаем вывод каждого оператора печати в отдельной строке. Но теперь мы заменим символ новой строки дефисом (-) в конце оператора печати.См. Следующий пример.
# инициализировать список
initList = ['верблюд', 'случай', 'стоп']
# выводим каждое слово с помощью цикла
print ('Печать с использованием функции печати по умолчанию')
для элемента в initList:
print (item) # функция печати по умолчанию. новая строка добавляется после каждого элемента.
print () # еще одна новая строка
# распечатать каждое слово, используя модифицированную функцию печати
print ('Печать с использованием модифицированной функции печати')
для элемента в initList:
print (элемент, конец = '-')
И вы получите следующие выходные данные
Печать с использованием функции печати по умолчанию
верблюд
дело
остановка
Печать с использованием модифицированной функции печати
верблюжий футляр-стоп-
Python печать в файл
В этом разделе мы узнаем о ключевом слове file
.Фактически ключевое слово file используется для извлечения вывода в указанный файл. Если вы читали наше предыдущее руководство по работе с файлами Python, то должны знать об основных операциях с файлами.
Итак, вы должны сначала открыть файл в режиме с возможностью записи, а затем использовать указатель файла в качестве значения ключевого слова файла в функции print () . См. Следующий код, чтобы понять использование файла печати Python.
# открыть файл в настроении для записи
fi = open ('output.txt', 'ш')
# инициализировать список
initList = ['верблюд', 'случай', 'стоп']
# выводим каждое слово с помощью цикла
print ('Печать с использованием функции печати по умолчанию')
для элемента в initList:
print (item, file = fi) # использовать ключевое слово файла
печать (файл = fi)
# распечатать каждое слово, используя модифицированную функцию печати
print ('Печать с использованием модифицированной функции печати')
для элемента в initList:
print (item, end = '-', file = fi) # использовать ключевое слово файла
# закрыть файл
fi.Закрыть()
И вы получите тот же результат, что и в предыдущем примере, в выходном текстовом файле.
Вот и все о печати Python. Надеюсь, вы это хорошо поняли. Для дальнейших запросов, не стесняйтесь использовать раздел комментариев. Удачи.
6. Функция печати - Python Notes (0.14.0)
6.1. Быстрый пример
Чтобы напечатать строку Hello world, используйте функцию print () следующим образом:
- правильный способ напечатать строку. Примечание; однако это Python 2.X можно также написать:
6.2. напечатать пустую строку (и)
Выведем 5 пустых строк. Можно наивно набрать:
или:
или даже лучше:
6.3. Распечатать объект без символа новой строки в конце
По умолчанию функция печати добавляет завершающую строку. Чтобы предотвратить такое поведение, добавьте запятую после оператора:
>>> х, у = 1, 2 >>> print (x) ,; печать (у) 1 2
вы можете использовать:
6.4. Форматированные строки
Специальный оператор% позволяет создавать форматированный вывод.Требуется два операнда: форматированная строка и значение. Значение может быть одним значением, кортежем значений или словарем значений. Например:
print ("pi =% s"% "3.14159")
Форматированная строка имеет спецификаторы преобразования , которые также используют специальные символы % s . Этот спецификатор преобразования сообщает Python, как преобразовать значение. Здесь% s означает преобразование значения в строку. Фактически, вы даже можете набрать:
, потому что правый операнд (с учетом спецификаторов преобразования) должен быть преобразован с помощью str ().
Чтобы быть более общим, вы можете включить значение в кортеж:
print ("pi =% s"% (3.14159))
и выведите 2 значения:
print ("% s =% s"% ("pi", 3,14159))
Спецификаторы преобразования могут также преобразовывать значения в числа с плавающей запятой, целые числа и так далее. См. Типы преобразования . Спецификаторы преобразования можно настроить, и в следующих разделах будет показано, как это сделать. Во-первых, давайте посмотрим на специальные символы.
6.5. Специальные символы
Чтобы избежать знака % , просто удвойте:
>>> print "Это знак процента: %%" Это знак процента:%
Другие специальные символы, аналогичные некоторым другим языкам, приведены в следующей таблице:
символ | Десятичное | Описание |
---|---|---|
\ | Заявление | продолжается на следующей строке |
\ | 92 | обратная косая черта |
\ ’ | 39 | Одиночная кавычка |
\ ” | 34 | Двойная цитата |
\ а | 7 | Белл |
\ б | 8 | Backspace |
\ f | Подача формы | |
\ п | 10 | новая строка |
\ r | 13 | возврат каретки |
\ т | 9 | таблица |
\ v | 11 | вертикальная таблица |
\ 0 \ 000 | пустое значение | |
\ ooo | восьмеричное значение o в (0..7) | |
\ ххх | шестнадцатеричное значение (0..9, a..f; A..F) | |
\ uxxxx | Значение символа Юникода |
6.6. Подробнее о спецификаторах преобразования
Общий синтаксис спецификатора преобразования:
% [(ключ)] [флаги] [ширина] [.
Рассмотрим подробнее каждый вариант. Начнем со значения типа .
6,6.1. Виды преобразования
Мы уже видели один тип: строковый тип% s. В следующей таблице приведены все доступные типы:
символ | Описание |
---|---|
в | Преобразует в односимвольный |
д, я | Преобразует в десятичное целое со знаком или длинное целое число со знаком |
u | Преобразует в десятичное целое без знака |
e, E | Преобразует в экспоненциальную запись с плавающей запятой |
f | Преобразует в систему с плавающей запятой в фиксированной десятичной системе счисления |
г | Преобразует в значение, меньшее из% f и% e |
G | Преобразует в значение, меньшее из% f и% E |
или | Преобразует в восьмеричное целое число без знака |
г | строка, созданная с помощью repr () |
с | Преобразует в строку с помощью функции str () |
х, х | Преобразует в шестнадцатеричное целое число без знака |
6.6.2. Форматирование строки со словарем
Давайте теперь посмотрим на вариант ключа . Этот ключ относится к ключам, используемым в словарях. Работает следующим образом:
>>> print ("% (key1) s и% (key2)%"% {'key1': 1, 'key2': 2}) «1 и 2»
6.6.3. Флаги
Второй тип опций - флаги:
символ | Описание | , пример | рендеринг |
---|---|---|---|
0 | блокнот номера с ведущими буквами | «(% 04d)»% 2 | 0002 |
– | выровнять результаты по левому краю (по умолчанию справа) | ||
пространство | добавить пробел перед положительным числом или строкой | ||
+ | Всегда начинайте число со знака (+ или -) | ||
# | отображать числа в альтернативной форме. |
6.6.4. Ширина
опцияШирина . - это положительное целое число, указывающее минимальную ширину поля. Если преобразованное значение короче , ширина , слева или справа добавляются пробелы (в зависимости от флагов ):
>>> print ("(% 10s)"% "пример") ( пример) >>> print ("(% - 10s)"% "пример") (пример )
6.6.5. Определенное количество цифр с опцией
PrecPrec - точка (.), за которым следует положительное целое число, определяющее точность. Обратите внимание, что здесь используется спецификатор преобразования% f:
>>> print ("%. 2f"% 2.012) 2,01
6.6.6. Модуль динамического форматирования
Иногда вы хотите отформатировать строку, но не знаете ее размера. В таком случае вы можете использовать динамическое форматирование, используя символ * следующим образом:
>>> print '% * s:% * s'% (20, «Python», 20, «Очень хорошо») Python: очень хорошо
6.7. Подробно о методе форматной строки
6.7.1. Поле замены {}
Рассмотрим этот пример:
>>> x = "пример" >>> "{0} {1}". Format ("The", x) "Пример"
{} - поле замены, обозначенное фигурными скобками и именем (или индексом). Если указан индекс, это индекс списка аргументов, предоставленных в вызове формата . В приведенном выше примере мы могли бы написать (с тем же результатом):
>>> "{1} {0}".формат (x, "The") "Пример"
К названию добавляем надежность:
>>> "{first} {second}". Format (first = "The", second = x) "Пример"
Можем совместить название и индексы:
>>> "{0} {second} {1}". Format ("The", x, second = "second") 'Второй пример'
Обратите внимание, что аргумент index должен быть указан перед аргументом name . Не работает:
>>> "{0} {second} {2}". Format ("The", second = "second", x)
Еще один удобный способ - предоставить словарь:
>>> d = {"first": "The", "second": x} >>> "{0 [первый]} {0 [второй]} {1}".формат (d, "со словарем") «Пример со словарем»
Вы даже можете использовать атрибут из класса, импорт:
>>> импорт математики >>> "{0.pi}". Формат (математический) 3,14159265359
Итак, вы можете использовать позиционные аргументы в сочетании с переменной, списком, словарем, атрибутом):
>>> класс A (): x = 1 >>> а = А () >>> "{0} {1 [2]} {2 [test]} {3.x}". Format ("This", ["a", "or", "is"], {"test" : "another"}, а) «Это еще один пример»
Поле замены можно изменить, используя следующий синтаксис:
{fieldname} {fieldname! конверсия} {fieldname: format-spec} {fieldname! conversion: format-spec}
6.7.2. преобразование
Давайте сначала объясним разницу между строковой формой и репрезентативной формой. Рассмотрим класс Decimal из десятичного модуля. Когда вы вводите имя переменной / экземпляра, он печатает репрезентативную форму экземпляра:
>>> десятичное. Десятичное ('3,40') Десятичный ('3,40')
Команда печати на самом деле печатает что-то другое:
>>> print (десятичное. Десятичное ('3.40')) 3,40
Обратите внимание на отсутствие кавычек.Здесь поведение печати определяется специальным методом __str__ . Форма представления удобна, если вы хотите воссоздать экземпляр. Строковая форма предназначена для удобной для человека формы.
Теперь преобразование формата может позволить вам выбрать один или другой:
>>> "{0! S}". Формат (десятичный.Десятичный ('3.40')) "3.40" "{0! R}". Формат (десятичный. Десятичный ('3.40')) «Десятичный ('3,40')»
Преобразование формата бывает нескольких типов:
с | форма силовой струны |
г | силовая представительная форма |
а | Форма представления силыс использованием ASCII |
6.7.3. спецификации формата
В спецификации формата используется символ : :
>>> "{0:10}". Format ("test") 'тест '
Полный синтаксис выглядит следующим образом:
========== ========= ======= ============== ========= ==== ====== ========= ===============
знак выравнивания заполнения # 0 тип точности ширины
========== ========= ======= ============== ========== === ====== ========= ===============
any Десятичный шестнадцатеричный chr нет
------- ----- ----- --------------------------------- -------
9250 2422 "Пустой символ
10240 2800 Пустой шаблон Брайля
.