Работа с текстовыми и CSV-файлами в Python: полное руководство
Работа с текстовыми и CSV-файлами в Python: полное руководство
В Python обработка текстовых данных и CSV-файлов – фундаментальный навык для любого разработчика. В этой статье подробно рассмотрим различные методы чтения и записи этих форматов с примерами и лучшими практиками.
1. Работа с текстовыми файлами
Открытие файлов
Используйте встроенную функцию open() с менеджером контекста with для безопасной работы:
with open('file.txt', 'r', encoding='utf-8') as file:
content = file.read()
Режимы доступа:
r– чтение (по умолчанию)w– запись (перезаписывает файл)a– добавление в конецr+– чтение и записьb– бинарный режим
Чтение данных
Прочитать весь файл:
with open('file.txt', 'r') as f:
content = f.read()
Чтение построчно:
with open('file.txt') as f:
for line in f:
print(line.strip())
Чтение в список строк:
with open('file.txt') as f:
lines = f.readlines()
Запись данных
Запись строки:
with open('output.txt', 'w') as f:
f.write("Hello, World!\n")
Запись нескольких строк:
lines = ["First line\n", "Second line\n"]
with open('output.txt', 'w') as f:
f.writelines(lines)
2. Работа с CSV-файлами
Модуль csv предоставляет инструменты для работы с CSV.
Чтение CSV
Использование csv.reader:
import csv
with open('data.csv', 'r') as f:
reader = csv.reader(f, delimiter=';')
for row in reader:
print(row[0], row[1])
Чтение в словарь с DictReader:
with open('data.csv') as f:
reader = csv.DictReader(f)
for row in reader:
print(row['Name'], row['Email'])
Запись CSV
Использование csv.writer:
data = [
['Name', 'Age'],
['Alice', 30],
['Bob', 25]
]
with open('output.csv', 'w', newline='') as f:
writer = csv.writer(f, quoting=csv.QUOTE_NONNUMERIC)
writer.writerows(data)
Запись словарей с DictWriter:
fieldnames = ['Name', 'Email']
users = [
{'Name': 'Alice', 'Email': 'alice@example.com'},
{'Name': 'Bob', 'Email': 'bob@domain.com'}
]
with open('users.csv', 'w') as f:
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(users)
Настройка формата
Параметры записи:
delimiter– разделитель (по умолчанию ’,’)quotechar– символ для обрамления значений (’”’)quoting– правила цитирования:QUOTE_ALL– обрамлять все значенияQUOTE_NONNUMERIC– обрамлять нечисловыеQUOTE_NONE– не использовать кавычки
Пример с кастомными настройками:
csv.register_dialect('my_dialect',
delimiter='|',
quoting=csv.QUOTE_NONE,
escapechar='\\')
with open('data.csv', 'w') as f:
writer = csv.writer(f, dialect='my_dialect')
writer.writerow(['Text|with|pipes', 100])
3. Обработка исключений
Всегда обрабатывайте возможные ошибки:
try:
with open('missing_file.txt') as f:
content = f.read()
except FileNotFoundError:
print("Файл не найден!")
except UnicodeDecodeError:
print("Ошибка кодировки!")
except Exception as e:
print(f"Неизвестная ошибка: {str(e)}")
4. Лучшие практики
- Всегда используйте менеджер контекста (
with) для автоматического закрытия файлов - Указывайте кодировку (особенно в Windows):
open('file.txt', encoding='utf-8') - Для больших файлов читайте данные частями или построчно
- При работе с CSV проверяйте целостность данных
- Используйте CSV-диалекты для однообразного форматирования
5. Альтернативные подходы
Для сложных задач обработки данных рассмотрите:
- Pandas для работы с DataFrame
- NumPy для числовых данных
- Dask для обработки больших файлов
Заключение
Python предоставляет мощные инструменты для работы с текстовыми и CSV-файлами через встроенные функции и модуль. Выбор метода зависит от конкретной задачи:
- Для простых текстовых данных используйте базовые методы чтения/записи
- Для структурированных табличных данных предпочтительнее модуль csv
- Для сложных сценариев обработки рассмотрите специализированные библиотеки
Правильная работа с файлами – ключ к надежности и производительности ваших скриптов. Всегда тестируйте код на разных типах данных и обрабатывайте исключения.