Обработка ввода и вывода в Python

PythonBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы изучите основные концепции обработки ввода и вывода (Input/Output, I/O) в Python. Мы рассмотрим, как отображать информацию в консоли с помощью функции print(), и как получать ввод от пользователя с клавиатуры.

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

Вывод строк в консоль

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

Сначала найдите файл output.py в проводнике файлов слева от WebIDE. Дважды щелкните по нему, чтобы открыть в редакторе.

Добавьте следующие строки кода в output.py:

print("Hello, LabEx!")
print("This is a Python course.")

Сохраните файл (можно использовать сочетание клавиш Ctrl+S). Чтобы запустить этот скрипт, откройте терминал в нижней части WebIDE и выполните следующую команду. Терминал должен уже находиться в директории ~/project.

python ~/project/output.py

В терминале вы увидите следующий вывод:

Hello, LabEx!
This is a Python course.

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

Измените файл output.py, заменив его содержимое следующей строкой:

print("Apple", "Banana", "Orange", "Grape", "Watermelon")

Сохраните файл и снова запустите его из терминала:

python ~/project/output.py

Вывод будет следующим:

Apple Banana Orange Grape Watermelon

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

Измените output.py еще раз:

print("Apple", "Banana", "Orange", "Grape", "Watermelon", sep=" | ")

Сохраните и запустите скрипт:

python ~/project/output.py

Теперь вывод использует ваш настраиваемый разделитель:

Apple | Banana | Orange | Grape | Watermelon

Это демонстрирует, как вы можете контролировать формат вывода в консоли.

Получение пользовательского ввода с клавиатуры

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

Найдите и откройте файл interactive.py в проводнике файлов WebIDE. Добавьте в него следующий код:

name = input("Please enter your name: ")
print("Your name is:", name)

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

Сохраните файл и запустите скрипт из терминала:

python ~/project/interactive.py

Скрипт приостановится и отобразит приглашение. Введите имя и нажмите Enter.

Please enter your name: Labex User
Your name is: Labex User

Скрипт фиксирует ваш ввод и использует его в финальном операторе print(). Это фундаментальный метод для создания интерактивных консольных приложений.

Запись данных в файл

Чтение из файлов и запись в них являются распространенными и важными операциями ввода-вывода (I/O). Python предоставляет встроенную функцию open() для работы с файлами.

Базовый синтаксис: open(filename, mode). Аргумент mode определяет, как файл будет использоваться. Общие режимы включают:

  • 'w': Режим записи (Write). Создает новый файл для записи. Если файл уже существует, его содержимое стирается.
  • 'r': Режим чтения (Read). Открывает существующий файл для чтения. Это режим по умолчанию.
  • 'a': Режим добавления (Append). Открывает файл для добавления содержимого в его конец. Если файл не существует, он создается.

Рекомендуемый способ работы с файлами — использование оператора with, который автоматически закрывает файл за вас, даже если возникают ошибки.

Попрактикуемся, записав некоторый текст в файл. Откройте файл file_io.py в редакторе WebIDE и добавьте следующий код:

with open("book.txt", "w") as f:
    f.write("Bed before bright moonlight,\n")
    f.write("Suspected to be frost on the ground.\n")
    f.write("Head held high, gazing at the bright moon,\n")
    f.write("Head bowed low, thinking of my homeland.")

Этот код открывает файл с именем book.txt в режиме записи ('w'). Метод f.write() записывает строки в файл. Символ \n обозначает перевод строки, поэтому каждый вызов write заканчивается новой строкой.

Сохраните файл и запустите скрипт из терминала:

python ~/project/file_io.py

Эта команда не даст никакого вывода в консоль, но она создаст новый файл с именем book.txt в вашей директории ~/project. Вы можете просмотреть его содержимое, используя команду cat в терминале:

cat ~/project/book.txt

Вывод должен содержать текст, который вы записали в файл:

Bed before bright moonlight,
Suspected to be frost on the ground.
Head held high, gazing at the bright moon,
Head bowed low, thinking of my homeland.

Использование оператора with является лучшей практикой, поскольку оно гарантирует, что файл будет корректно закрыт после выполнения блока кода.

Чтение данных из файла

Теперь, когда мы создали и записали данные в book.txt, давайте научимся читать его содержимое. Python предлагает несколько методов для чтения файлов. Мы рассмотрим наиболее распространенные из них.

Мы продолжим работать со скриптом file_io.py. Вы добавите код для чтения только что созданного файла.

Метод read()

Метод read() считывает все содержимое файла и возвращает его в виде одной строки.

Добавьте следующий код в конец вашего скрипта file_io.py. Это заставит скрипт сначала записать файл, а затем прочитать его обратно и вывести содержимое.

## Код записи из предыдущего шага должен быть выше этого

print("\n--- Чтение всего файла с помощью read() ---")
with open("book.txt", "r") as f:
    content = f.read()
    print(content)

Сохраните файл и запустите его из терминала:

python ~/project/file_io.py

Теперь вывод будет включать содержимое book.txt, напечатанное в консоли:

--- Чтение всего файла с помощью read() ---
Bed before bright moonlight,
Suspected to be frost on the ground.
Head held high, gazing at the bright moon,
Head bowed low, thinking of my homeland.

Итерация по строкам

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

Теперь добавьте этот следующий блок кода в file_io.py:

print("\n--- Чтение файла построчно ---")
with open("book.txt", "r") as f:
    for line in f:
        print(line, end='')

Здесь end='' в функции print() предотвращает добавление лишнего символа новой строки, поскольку каждая строка (line), считанная из файла, уже заканчивается символом новой строки (\n).

Сохраните и снова запустите скрипт:

python ~/project/file_io.py

Вывод для этого раздела будет идентичен выводу метода read(), но внутренняя процедура отличается: считывается по одной строке за раз.

Метод readlines()

Метод readlines() считывает все строки из файла и возвращает их в виде списка строк.

Наконец, добавьте этот последний блок кода в file_io.py:

print("\n\n--- Чтение всех строк с помощью readlines() ---")
with open("book.txt", "r") as f:
    all_lines = f.readlines()
    print(all_lines)

Сохраните и запустите скрипт в последний раз:

python ~/project/file_io.py

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

--- Чтение всех строк с помощью readlines() ---
['Bed before bright moonlight,\n', 'Suspected to be frost on the ground.\n', 'Head held high, gazing at the bright moon,\n', 'Head bowed low, thinking of my homeland.']

Теперь вы попрактиковались в использовании основных методов для записи в файлы и чтения из них в Python.

Резюме

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

Наконец, вы изучили операции ввода-вывода файлов. Вы узнали, как записывать данные в файл, используя open() в режиме записи (write mode) с рекомендуемым оператором with. Вы также попрактиковались в чтении данных из файла с использованием различных методов, включая read(), построчную итерацию и readlines(). Эти навыки являются основополагающими для создания более сложных приложений на Python, которые взаимодействуют с пользователями и данными.