Найти в Дзене

Работа с текстовыми и CSV-файлами в Python

В Python обработка текстовых данных и CSV-файлов – фундаментальный навык для любого разработчика. В этой статье подробно рассмотрим различные методы чтения и записи этих форматов с примерами и лучшими практиками. Используйте встроенную функцию 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) Модуль csv предостав
Оглавление

В 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

- Для сложных сценариев обработки рассмотрите специализированные библиотеки

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

Подписывайтесь:

Телеграм https://t.me/lets_go_code
Канал "Просто о программировании"
https://dzen.ru/lets_go_code