Работа с текстовыми и CSV-файлами в Python: полное руководство

Работа с текстовыми и 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. Лучшие практики

  1. Всегда используйте менеджер контекста (with) для автоматического закрытия файлов
  2. Указывайте кодировку (особенно в Windows):
    open('file.txt', encoding='utf-8')
  3. Для больших файлов читайте данные частями или построчно
  4. При работе с CSV проверяйте целостность данных
  5. Используйте CSV-диалекты для однообразного форматирования

5. Альтернативные подходы

Для сложных задач обработки данных рассмотрите:

  • Pandas для работы с DataFrame
  • NumPy для числовых данных
  • Dask для обработки больших файлов

Заключение

Python предоставляет мощные инструменты для работы с текстовыми и CSV-файлами через встроенные функции и модуль. Выбор метода зависит от конкретной задачи:

  • Для простых текстовых данных используйте базовые методы чтения/записи
  • Для структурированных табличных данных предпочтительнее модуль csv
  • Для сложных сценариев обработки рассмотрите специализированные библиотеки

Правильная работа с файлами – ключ к надежности и производительности ваших скриптов. Всегда тестируйте код на разных типах данных и обрабатывайте исключения.