07. Работа с файлами
Почему важно уметь работать с файлами
Файлы — это способ хранить данные между запусками программы. Например, вы можете сохранять результаты игры, записи пользователей, текстовые заметки или статистику.Представь, что твоя программа — это дневник. Чтобы не потерять записи, ты сохраняешь их в файл.
В Python для работы с файлами есть встроенные функции open(), read(), write() и конструкция with.
Открытие и чтение файла
file = open('data.txt', 'r', encoding='utf-8')
content = file.read()
print(content)
file.close()
Что происходит
- Открываем файл data.txt в режиме чтения ('r').
- Считываем содержимое функцией read().
- Закрываем файл, чтобы освободить ресурсы (close()).
Лучший способ — with open()
В Python есть удобный способ автоматически закрывать файл:
with open('data.txt', 'r', encoding='utf-8') as f:
content = f.read()
print(content)
Преимущество — файл закрывается автоматически, даже если произойдёт ошибка.
Запись в файл
Чтобы записать данные, используем режим 'w' (write):
with open('data.txt', 'w', encoding='utf-8') as f:
f.write('Привет, файл!')
Если файл уже существует, его содержимое будет перезаписано.
Добавление текста (режим 'a')
with open('data.txt', 'a', encoding='utf-8') as f:
f.write('\nНовая строка')
Теперь в файле:
Привет, файл!
Новая строка
Чтение построчно
with open('data.txt', 'r', encoding='utf-8') as f:
for line in f:
print('Строка:', line.strip())
Метод strip() убирает лишние пробелы и символы перевода строки.
Запись списка строк
lines = ['Пункт 1', 'Пункт 2', 'Пункт 3']
with open('list.txt', 'w', encoding='utf-8') as f:
for line in lines:
f.write(line + '\n')
Проверка существования файла
import os
if os.path.exists('data.txt'):
print('Файл найден!')
else:
print('Файл не найден!')
Обработка ошибок при работе с файлами
Иногда файл может не существовать, или у программы нет прав на запись. Чтобы избежать ошибок, используем try/except:
try:
with open('config.txt', 'r', encoding='utf-8') as f:
print(f.read())
except FileNotFoundError:
print('Файл не найден!')
Полезные режимы открытия файла
- 'r' — чтение (по умолчанию)
- 'w' — запись (перезаписывает файл)
- 'a' — добавление (append)
- 'x' — создать новый файл (ошибка, если уже существует)
- 'b' — двоичный режим (binary, для изображений и т.п.)
Работа с файлами CSV
CSV — это таблица, где значения разделены запятыми. Python имеет модуль csv для чтения и записи таких файлов.
import csv# Запись данных
with open('users.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(['Имя', 'Возраст'])
writer.writerow(['Анна', 25])
writer.writerow(['Иван', 30])
# Чтение данных
with open('users.csv', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
for row in reader:
print(row)
Работа с JSON-файлами
import jsonuser = {'name': 'Анна', 'age': 25}
# Запись JSON
with open('user.json', 'w', encoding='utf-8') as f:
json.dump(user, f, ensure_ascii=False, indent=2)
# Чтение JSON
with open('user.json', 'r', encoding='utf-8') as f:
data = json.load(f)
print(data['name'])
Практические задачи
- Создай программу, которая записывает введённый пользователем текст в файл.
- Сделай программу, которая считает количество строк в файле.
- Сохрани словарь Python в JSON-файл и затем прочитай его обратно.
Типичные ошибки новичков
- Забывают закрыть файл (поэтому лучше использовать with open()).
- Перезаписывают файл вместо добавления (используют 'w' вместо 'a').
- Не указывают кодировку (encoding='utf-8') при работе с русским текстом.
Мини-проект: дневник заметок
while True:
note = input('Введите заметку (или пустую строку для выхода): ')
if not note:
break
with open('notes.txt', 'a', encoding='utf-8') as f:
f.write(note + '\n')
print('Все заметки сохранены!')
Итоги урока
Теперь вы знаете:- Как открывать, читать и записывать файлы в Python.
- Как использовать with open() для безопасной работы.
- Как обрабатывать ошибки при работе с файлами.
- Как работать с CSV и JSON-файлами.