Работа с файлами в Python: Полное руководство для начинающих
Узнайте, как читать, записывать и управлять файлами в Python. Подробное руководство с примерами кода: открытие файлов, чтение и запись данных, работа с CSV и JSON, обработка ошибок. Идеально для новичков в программировании.
Открытие файлов
Для работы с файлами в Python используется встроенная функция open(). Основной синтаксис:
file = open('filename.txt', 'mode')Основные режимы открытия:
'r'— чтение (read). Файл должен существовать'w'— запись (write). Создаёт новый файл или перезаписывает существующий'a'— добавление (append). Дописывает данные в конец файла'r+'— чтение и запись'b'— бинарный режим (например,'rb'или'wb')

Чтение файлов
Чтение всего содержимого:
with open('example.txt', 'r', encoding='utf-8') as file:
content = file.read()
print(content)Чтение построчно:
with open('example.txt', 'r', encoding='utf-8') as file:
for line in file:
print(line.strip()) # strip() убирает символы переноса строкиЧтение всех строк в список:
with open('example.txt', 'r', encoding='utf-8') as file:
lines = file.readlines()
print(lines)Запись в файлы
Запись текста (перезапись файла):
with open('output.txt', 'w', encoding='utf-8') as file:
file.write('Привет, мир!\n')
file.write('Это вторая строка.')Добавление текста в конец файла:
with open('output.txt', 'a', encoding='utf-8') as file:
file.write('\nДополнительная строка')Запись списка строк:
lines = ['Первая строка\n', 'Вторая строка\n', 'Третья строка\n']
with open('output.txt', 'w', encoding='utf-8') as file:
file.writelines(lines)Конструкция with
Использование with — это лучшая практика при работе с файлами. Она автоматически закрывает файл после выполнения блока кода, даже если произошла ошибка.
Без with (не рекомендуется):
file = open('example.txt', 'r')
content = file.read()
file.close() # Нужно не забыть закрыть файл!С with (рекомендуется):
with open('example.txt', 'r') as file:
content = file.read()
# Файл автоматически закрыт после выхода из блокаРабота с путями к файлам
Для удобной работы с путями используйте модуль pathlib:
from pathlib import Path
# Создание пути
file_path = Path('folder') / 'subfolder' / 'file.txt'
# Проверка существования
if file_path.exists():
print('Файл существует')
# Чтение файла
content = file_path.read_text(encoding='utf-8')
# Запись в файл
file_path.write_text('Новое содержимое', encoding='utf-8')
Обработка ошибок
При работе с файлами важно обрабатывать возможные ошибки:
try:
with open('nonexistent.txt', 'r', encoding='utf-8') as file:
content = file.read()
except FileNotFoundError:
print('Файл не найден')
except PermissionError:
print('Нет прав доступа к файлу')
except Exception as e:
print(f'Произошла ошибка: {e}')Работа с CSV файлами
Python имеет встроенный модуль csv для работы с CSV файлами:
import csv
# Чтение CSV
with open('data.csv', 'r', encoding='utf-8') as file:
reader = csv.reader(file)
for row in reader:
print(row)
# Запись CSV
data = [
['Имя', 'Возраст', 'Город'],
['Алексей', '25', 'Москва'],
['Мария', '30', 'Санкт-Петербург']
]
with open('output.csv', 'w', encoding='utf-8', newline='') as file:
writer = csv.writer(file)
writer.writerows(data)Работа с JSON файлами
Для работы с JSON используется модуль json:
import json
# Чтение JSON
with open('data.json', 'r', encoding='utf-8') as file:
data = json.load(file)
print(data)
# Запись JSON
data = {
'name': 'Иван',
'age': 28,
'skills': ['Python', 'JavaScript']
}
with open('output.json', 'w', encoding='utf-8') as file:
json.dump(data, file, ensure_ascii=False, indent=4)Практические примеры
Подсчёт количества строк в файле:
with open('example.txt', 'r', encoding='utf-8') as file:
line_count = sum(1 for line in file)
print(f'Количество строк: {line_count}')Поиск слова в файле:
search_word = 'Python'
with open('example.txt', 'r', encoding='utf-8') as file:
for line_number, line in enumerate(file, 1):
if search_word in line:
print(f'Найдено в строке {line_number}: {line.strip()}')Копирование файла:
with open('source.txt', 'r', encoding='utf-8') as source:
with open('destination.txt', 'w', encoding='utf-8') as destination:
destination.write(source.read())Полезные советы
Всегда указывайте кодировку. Используйте encoding='utf-8' для корректной работы с русским текстом.
Используйте with для автоматического закрытия файлов. Это предотвращает утечки ресурсов и потерю данных.
Обрабатывайте исключения. Файлы могут не существовать, быть заблокированными или у вас может не быть прав доступа.
Проверяйте существование файлов. Перед чтением убедитесь, что файл существует, используя Path.exists() или обработку исключений.
Будьте осторожны с большими файлами. Метод read() загружает весь файл в память. Для больших файлов лучше читать построчно.
Заключение
Работа с файлами в Python проста и интуитивно понятна. Основные принципы: используйте конструкцию with, не забывайте об обработке ошибок и правильно выбирайте режим открытия файла. С этими знаниями вы готовы эффективно работать с файлами в своих проектах!
Кодик — это дружелюбное сообщество разработчиков, где каждый может учиться программированию, делиться опытом и получать поддержку от единомышленников. Мы создали пространство, где новички чувствуют себя комфортно задавать любые вопросы, а опытные программисты с радостью делятся знаниями и помогают расти.
Присоединяйся к Кодику — здесь код пишется легче, а обучение проходит в атмосфере взаимопомощи и вдохновения!