Найти в Дзене
RuMicro

Работа с вводом и выводом в Python

В Python работа с вводом-выводом (I/O) реализована просто и гибко. Рассмотрим основные аспекты. python # Базовый вывод
print("Hello, World!")
# Вывод нескольких значений
print("Возраст:", 25, "лет")
# Разделитель (параметр sep)
print("яблоко", "банан", "апельсин", sep=", ") # яблоко, банан, апельсин
# Завершение строки (параметр end)
print("Загрузка", end="...")
print("готова") # Загрузка...готова
# Вывод в файл
with open("log.txt", "w") as f:
print("Сообщение в файл", file=f) python name = "Анна"
age = 30
score = 95.5
# f-строки (Python 3.6+)
print(f"Имя: {name}, Возраст: {age}, Баллы: {score:.1f}")
# Метод format()
print("Имя: {}, Возраст: {}, Баллы: {:.1f}".format(name, age, score))
# %-форматирование (старый стиль)
print("Имя: %s, Возраст: %d, Баллы: %.1f" % (name, age, score)) python # Базовый ввод
name = input("Введите ваше имя: ")
print(f"Привет, {name}!")
# Преобразование типов
age = int(input("Сколько вам лет? ")) # Всегда возвращает строку
height = float(input(
Оглавление

В Python работа с вводом-выводом (I/O) реализована просто и гибко. Рассмотрим основные аспекты.

1. Вывод данных

Функция print()

python

# Базовый вывод
print("Hello, World!")

# Вывод нескольких значений
print("Возраст:", 25, "лет")

# Разделитель (параметр sep)
print("яблоко", "банан", "апельсин", sep=", ") # яблоко, банан, апельсин

# Завершение строки (параметр end)
print("Загрузка", end="...")
print("готова") # Загрузка...готова

# Вывод в файл
with open("log.txt", "w") as f:
print("Сообщение в файл", file=f)

Форматированный вывод

python

name = "Анна"
age = 30
score = 95.5

# f-строки (Python 3.6+)
print(f"Имя: {name}, Возраст: {age}, Баллы: {score:.1f}")

# Метод format()
print("Имя: {}, Возраст: {}, Баллы: {:.1f}".format(name, age, score))

# %-форматирование (старый стиль)
print("Имя: %s, Возраст: %d, Баллы: %.1f" % (name, age, score))

2. Ввод данных

Функция input()

python

# Базовый ввод
name = input("Введите ваше имя: ")
print(f"Привет, {name}!")

# Преобразование типов
age = int(input("Сколько вам лет? ")) # Всегда возвращает строку
height = float(input("Ваш рост (в метрах): "))

# Обработка ошибок
try:
number = int(input("Введите число: "))
except ValueError:
print("Это не число!")

3. Работа с файлами

Открытие файлов

python

# Режимы открытия файла:
# 'r' - чтение (по умолчанию)
# 'w' - запись (создает новый или перезаписывает)
# 'a' - добавление в конец
# 'x' - создание, если файл не существует
# 'b' - бинарный режим
# 't' - текстовый режим (по умолчанию)
# '+' - чтение и запись

Чтение файлов

python

# Способ 1: with (рекомендуемый)
with open("file.txt", "r", encoding="utf-8") as file:
content = file.read() # читаем весь файл
print(content)

# Построчное чтение
with open("file.txt", "r", encoding="utf-8") as file:
for line in file:
print(line.strip()) # strip() убирает символы переноса

# Чтение всех строк в список
with open("file.txt", "r", encoding="utf-8") as file:
lines = file.readlines()
for line in lines:
print(line.strip())

# Чтение фиксированного количества символов
with open("file.txt", "r", encoding="utf-8") as file:
chunk = file.read(100) # читаем первые 100 символов

Запись в файлы

python

# Запись строки
with open("output.txt", "w", encoding="utf-8") as file:
file.write("Привет, мир!\n")
file.write("Вторая строка\n")

# Запись нескольких строк
lines = ["Строка 1\n", "Строка 2\n", "Строка 3\n"]
with open("output.txt", "w", encoding="utf-8") as file:
file.writelines(lines)

# Добавление в конец файла
with open("output.txt", "a", encoding="utf-8") as file:
file.write("Добавленная строка\n")

4. Работа с бинарными файлами

python

# Чтение бинарного файла
with open("image.jpg", "rb") as file:
data = file.read()
print(f"Размер файла: {len(data)} байт")

# Запись бинарных данных
binary_data = b'\x48\x65\x6c\x6c\x6f' # "Hello" в байтах
with open("binary.bin", "wb") as file:
file.write(binary_data)

5. Позиционирование в файле

python

with open("file.txt", "r+") as file:
# Получаем текущую позицию
position = file.tell()
print(f"Текущая позиция: {position}")

# Читаем 10 символов
content = file.read(10)

# Перемещаемся в начало файла
file.seek(0)

# Перемещаемся на 5 байт от текущей позиции
file.seek(5, 1) # 0 - начало, 1 - текущая, 2 - конец

# Перемещаемся в конец файла
file.seek(0, 2)

6. Работа с временными файлами

python

import tempfile
import os

# Создание временного файла
with tempfile.NamedTemporaryFile(mode='w', delete=False) as tmp:
tmp.write("Временные данные")
print(f"Временный файл: {tmp.name}")

# Файл автоматически удалится после закрытия (если delete=True)
with tempfile.TemporaryFile(mode='w+') as tmp:
tmp.write("Данные")
tmp.seek(0)
print(tmp.read())

7. Работа с путями файлов

python

import os
from pathlib import Path

# Старый способ (os.path)
file_path = os.path.join("folder", "subfolder", "file.txt")
dir_name = os.path.dirname(file_path)
base_name = os.path.basename(file_path)
abs_path = os.path.abspath(file_path)

# Новый способ (pathlib - Python 3.4+)
path = Path("folder/subfolder/file.txt")
print(path.name) # file.txt
print(path.stem) # file
print(path.suffix) # .txt
print(path.parent) # folder/subfolder
print(path.exists()) # Проверка существования

# Создание директорий
Path("new_folder/subfolder").mkdir(parents=True, exist_ok=True)

8. Практический пример: обработка CSV

python

import csv

# Запись CSV
data = [
["Имя", "Возраст", "Город"],
["Анна", 25, "Москва"],
["Иван", 30, "СПб"],
["Мария", 28, "Казань"]
]

with open("users.csv", "w", newline="", encoding="utf-8") as file:
writer = csv.writer(file)
writer.writerows(data)

# Чтение CSV
with open("users.csv", "r", encoding="utf-8") as file:
reader = csv.reader(file)
for row in reader:
print(row)

# Использование DictReader/DictWriter
with open("users.csv", "r", encoding="utf-8") as file:
reader = csv.DictReader(file)
for row in reader:
print(f"{row['Имя']} - {row['Возраст']} лет")

9. Обработка ошибок при работе с файлами

python

try:
with open("nonexistent.txt", "r") as file:
content = file.read()
except FileNotFoundError:
print("Файл не найден!")
except PermissionError:
print("Нет прав доступа!")
except IOError as e:
print(f"Ошибка ввода-вывода: {e}")
finally:
print("Блок finally выполняется всегда")

10. Кодировки

python

# Указание кодировки при работе с текстовыми файлами
with open("file.txt", "r", encoding="utf-8") as f:
content = f.read()

# Список доступных кодировок
import encodings
# print(encodings.aliases.aliases)

# Обработка ошибок кодировки
with open("file.txt", "r", encoding="utf-8", errors="ignore") as f:
content = f.read() # пропускает неправильные символы

Ключевые моменты

  1. Всегда используйте with для работы с файлами - он автоматически закрывает файл
  2. Указывайте кодировку (encoding="utf-8") для текстовых файлов
  3. Обрабатывайте исключения при работе с файлами
  4. Используйте pathlib для работы с путями в современном коде
  5. Не забывайте про .strip() при чтении строк для удаления символов переноса

Это основы работы с вводом-выводом в Python. Для более специфичных форматов (JSON, XML, Excel и т.д.) существуют специализированные библиотеки.