Работа с файлами в Python: инструментарий и решения

Раздел: Библиотеки -> Работа со специализированными библиотеками

Библиотеки для работы с файлами: обзор и примеры

Python предлагает множество библиотек для взаимодействия с файловой системой и обработки данных. Выбор подходящего инструмента зависит от задачи. Рассмотрим основные варианты.

Как организовать надёжную работу с файлами в современном проекте?

Модуль pathlib из стандартной библиотеки предоставляет объектно-ориентированный интерфейс для путей. Вместе с менеджером контекста with он обеспечивает безопасное открытие и закрытие файлов.

from pathlib import Path

path = Path('data.txt')
if path.exists():
    with path.open('r', encoding='utf-8') as f:
        text = f.read()
    print(text[:100])

Python библиотеки словари (библиотеки для работы со словарями в python)

Этот код читает первые 100 символов файла, гарантируя освобождение ресурсов. Кодировка указана явно, что предотвращает ошибки на разных платформах.

Проблема: файл может быть большим. Решение: использовать итерацию построчно (for line in f) вместо read().

Как получить список файлов в директории, не используя pathlib?

Классический способ через os.listdir().

import os

entries = os.listdir('.')
files = [e for e in entries if os.path.isfile(e)]
print(files)

библиотека python user (пользовательские библиотеки python)

Ошибка: в список попадают скрытые файлы. Фильтр: исключить файлы, начинающиеся с точки, с помощью условия not e.startswith('.').

Как выбрать файлы по маске, например все изображения?

Модуль glob упрощает поиск по шаблонам.

import glob

images = glob.glob('*.jpg') + glob.glob('*.png')
print(images)

библиотека алгоритмов python (библиотека алгоритмов в python)

Как прочитать файл CSV и преобразовать его в список словарей?

Встроенный модуль csv справляется с этой задачей.

import csv

with open('data.csv', 'r', newline='', encoding='utf-8') as f:
    reader = csv.DictReader(f)
    rows = [row for row in reader]
print(rows)

библиотека скриптов python (библиотека скриптов в python)

Распространённая ошибка: разделитель не запятая. Исправление: указать параметр delimiter=';' при создании reader.

Как записать данные в JSON-файл с красивым форматированием?

Модуль json позволяет сериализовать объекты.

import json

data = {'name': 'Alice', 'scores': [10, 20]}
with open('output.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, indent=2, ensure_ascii=False)

библиотеки работы с файлами python (библиотеки для работы с файлами в python)

Параметр ensure_ascii=False сохраняет символы Unicode.

Как скопировать файл из одного места в другое?

Библиотека shutil предоставляет функцию copy2, которая копирует содержимое и метаданные.

import shutil

shutil.copy2('source.txt', 'backup/source.txt')

Python библиотека сети (сетевая библиотека в python)

Ошибка: целевая директория не существует. Решение: предварительно создать её через os.makedirs или pathlib.Path.mkdir(parents=True).

Как прочитать содержимое Excel-файла без установки pandas?

Библиотека openpyxl (сторонняя) поддерживает формат .xlsx.

from openpyxl import load_workbook

wb = load_workbook('report.xlsx')
ws = wb.active
for row in ws.iter_rows(values_only=True):
    print(row)

Расширенные примеры работы с файлами

Приведённые ниже сценарии демонстрируют нетривиальные случаи применения библиотек.

Рекурсивный обход всех файлов проекта

Использование pathlib.rglob() позволяет найти все файлы с определённым расширением в поддиректориях.

Пример
from pathlib import Path

base = Path('src')
for py_file in base.rglob('*.py'):
    print(py_file)
src\main.py
src\utils\helpers.py
src\tests\test_utils.py

Результат показывает все файлы .py внутри папки src и её подпапок.

Параллельное чтение нескольких больших файлов

С помощью concurrent.futures можно ускорить обработку.

Пример
import concurrent.futures
import os

def read_file(filename):
    with open(filename, 'r', encoding='utf-8') as f:
        return len(f.read())

files = ['big1.txt', 'big2.txt', 'big3.txt']
with concurrent.futures.ProcessPoolExecutor() as executor:
    results = list(executor.map(read_file, files))
print(sum(results))

Проблема: утечка памяти при чтении всех данных в память. Альтернатива: обрабатывать файл построчно или использовать mmap.

Создание временного файла и его автоматическое удаление

Модуль tempfile обеспечивает безопасное создание временных ресурсов.

Пример
import tempfile

with tempfile.NamedTemporaryFile(mode='w', suffix='.txt', delete=True) as tmp:
    tmp.write('Временные данные')
    tmp.flush()
    # Путь к файлу доступен как tmp.name
    print('Создан файл:', tmp.name)
# После выхода из with файл удалён

Библиотеки для работы с файлами в Python - comments

En
библиотеки работы с файлами python (python)