Ввод-вывод
Рано или поздно возникают ситуации, когда программа должна взаимодействовать с пользователем. Например, принять какие-нибудь данные от пользователя, а затем вывести результаты. Для этого применяются функции input()
и print()
соответственно.
Для вывода можно также использовать различные методы класса str
(строка). К примеру, при помощи метода rjust
можно получить строку, выравненную по правому краю к указанной ширине. См. help(str)
для более подробного описания.
Ещё одним распространённым типом ввода/вывода является работа с файлами. Возможность создавать, читать и записывать в файлы является ключевой для многих программ, поэтому в настоящей главе и мы рассмотрим этот аспект.
Ввод от пользователя
Сохраните эту программу как user_input.py
:
Вывод:
Как это работает:
Функция
input()
принимает строку в качестве аргумента и показывает её пользователю. Затем она ждёт, чтобы пользователь набрал что-нибудь и нажал клавишу ввода. Как только пользователь это сделал, функцияinput()
возвращает введённый пользователем текст.Мы считываем этот текст и выстраиваем его в обратном порядке. Если перевёрнутый и исходный текст одинаковы, значит введённый текст является палиндромом.
Файлы
Открывать и использовать файлы для чтения или записи можно путём создания объекта класса file
, а читать/записывать в файл – при помощи его методов read
, readline
или write
соответственно. Возможность читать или записывать в файл зависит от режима, указанного при открытии файла. По окончании работы с файлом, нужно вызвать метод close
, чтобы указать Python, что файл больше не используется.
Пример: (сохраните как using_file.py
)
Вывод:
Как это работает:
Сперва мы открываем файл при помощи встроенной функции
open
с указанием имени файла и режима, в котором мы хотим его открыть. Режим может быть для чтения ('r'
), записи ('w'
) или добавления ('a'
). Можно также указать, в каком виде мы будем считывать, записывать или добавлять данные: в текстовом ('t'
) или бинарном ('b'
). На самом деле существует много других режимов, иhelp(open)
даст вам их детальное описание. По умолчаниюopen()
открывает файл как текст в режиме для чтения.В нашем примере мы сначала открываем файл в режиме записи текста и используем метод
write
файлового объекта для записи в файл, после чего закрываем файл при помощиclose
.Далее мы открываем тот же самый файл для чтения. В этом случае нет нужды указывать режим, так как режим “чтения текстового файла” применяется по умолчанию. Мы считываем файл построчно методом
readline
в цикле. Этот метод возвращает полную строку, включая символ перевода строки в конце. Когда же он возвращает пустую строку, это означает, что мы достигли конца файла, и мы прерываем цикл при помощиbreak
.По умолчанию функция
print()
выводит текст, автоматически добавляя символ перевода строки в конце. Мы подавляем этот символ, указываяend=''
, поскольку строки, считанные из файла, и без того оканчиваются символом перевода строки. И, наконец, мы закрываем файл с помощьюclose
.Теперь проверяем содержимое файла
poem.txt
, чтобы убедиться, что программа действительно записала текст в него и считала из него.
Pickle
Python предоставляет стандартный модуль с именем pickle
, при помощи которого можно сохранять любой объект Python в файле, а затем извлекать его обратно. Это называется длительным хранением объекта.
Пример: (сохраните как pickling.py
):
Вывод:
Как это работает:
Чтобы сохранить объект в файле, нам нужно сперва открыть файл с помощью
open
в режиме бинарной записи ('wb'
), после чего вызвать функциюdump
из модуляpickle
. Этот процесс называется “консервацией” (“pickling”).После этого мы извлекаем объект при помощи функции
load
из модуляpickle
, которая возвращает объект. Этот процесс называется “расконсервацией” (“unpickling”).
Last updated