Автоматизация рутины: 5 скриптов на Python для работы с файлами

Введение

Знакомая ситуация? Перед вами папка с пятью сотнями фотографий в хаотичном порядке, требующая переименования. Или огромный CSV-файл, засоренный пустыми строками, который нужно почистить для анализа. Вручную это — часы, а то и дни монотонной, выматывающей работы. А что, если я скажу вам, что такие задачи можно поручить компьютеру, освободив себе время для действительно важных проектов, обучения или даже отдыха?

В этом руководстве я, как эксперт в области практического применения IT-навыков для карьеры, покажу вам 5 рабочих Python-скриптов. Это не академические упражнения, а конкретные инструменты, которые я и мои студенты используем регулярно. Вы скопируете код, адаптируете под свои нужды и получите результат уже через 10 минут. Инвестиция времени в изучение этой автоматизации окупится (и не раз!) в вашей будущей работе, будь вы в IT, маркетинге, аналитике или управлении.

Шаг 1: Создание и запись текста в файл

Задача: Автоматически генерировать и наполнять файлы. Представьте, что вам нужно ежедневно создавать отчёт по шаблону, логировать действия программы или готовить конфигурационные файлы.

Логика: Всё строится вокруг встроенной функции open(). Ключевой момент — выбор режима. Используем 'w' (write) для записи. Важный нюанс из практики: этот режим создаст новый файл или полностью перезапишет существующий, поэтому всегда проверяйте имя.

Код:

file_name = "automated_file.txt"
text = "Hello! This is an automated file with text."

with open(file_name, 'w') as file:
    file.write(text)

print(f"Файл {file_name} успешно создан!")

Как это работает и где применять: Запустите скрипт — в папке появится automated_file.txt с вашим текстом. С этого начинается автоматизация любых текстовых отчётов. Например, можно автоматизировать подготовку ежедневного stand-up отчёта для команды, подставляя в шаблон данные из календаря.

Практический инсайт: Хотите записать несколько строк с переносами? Используйте символ новой строки n или метод writelines() для списка строк.

⚠️ Критически важное предупреждение: Режим 'w' — «безжалостный». Он не спрашивает разрешения на перезапись. Если вам нужно добавить текст в конец существующего файла (например, в лог), используйте режим 'a' (append).

Шаг 2: Чтение текста из файла

Задача: Программно извлекать данные из файлов для последующей обработки. Это основа для анализа логов, обработки данных из выгрузок, чтения конфигов.

Логика: Снова open(), но с режимом 'r' (read). Здесь есть два основных подхода: считать всё сразу или обрабатывать построчно. Выбор зависит от размера файла, и это ключевой момент для эффективности.

Код (способ 1 — весь файл):

with open('text_file.txt', 'r') as f:
    content = f.read()
    print(content)

Код (способ 2 — построчно):

with open('text_file.txt', 'r') as f:
    lines = f.readlines()
    print(lines)

Разбор на примере: Допустим, файл содержит две строки. Первый способ вернёт одну строку с символом n внутри, второй — список строк. Для простого вывода подойдёт первый. Но если вам нужно найти конкретную информацию или обработать каждую строку по отдельности (например, извлечь все email-адреса), то второй способ или итерация по файлу в цикле — ваш выбор.

Профессиональный совет: Работаете с большими файлами (сотни мегабайт и гигабайты)? Никогда не используйте read() полностью — «съедите» всю память. Всегда читайте построчно или заданными блоками.

Шаг 3: Массовое переименование файлов

Задача: Привести к порядку кипу файлов: пронумеровать фотографии, привести к единому формату названия документов, изменить расширения группе файлов.

Логика: Подключаем модуль os для работы с операционной системой. Алгоритм: получить список всего в папке (os.listdir()), отфильтровать только файлы, применить к каждому функцию переименования (os.rename()).

Код:

import os

folder_path = "путь_к_папке"  # Замените на вашу папку

for i, filename in enumerate(os.listdir(folder_path)):
    # Проверяем, что это файл, а не папка
    if os.path.isfile(os.path.join(folder_path, filename)):
        new_name = f"file_{i}.txt"
        old_path = os.path.join(folder_path, filename)
        new_path = os.path.join(folder_path, new_name)
        os.rename(old_path, new_path)
        print(f"Переименован: {filename} → {new_name}")

Результат и адаптация: Файлы document.txt, photo.jpg станут file_0.txt, file_1.txt. Но это базовый шаблон. В реальных проектах вы, скорее всего, захотите:

  • Сохранить оригинальные расширения: new_name = f"document_{i}{os.path.splitext(filename)[1]}"
  • Работать только с определёнными типами файлов: Добавьте условие if filename.endswith('.jpg'):
  • Добавить префикс или дату: new_name = f"2024_05_{filename}"

⛔ Главное правило безопасности: Всегда тестируйте скрипт для переименования сначала на копиях файлов или с командой print(), чтобы увидеть план изменений, и только потом запускайте реальное переименование. Одна ошибка в логике может привести к хаосу.

Шаг 4: Создание резервной копии файлов

Задача: Автоматизировать бэкап важных рабочих документов, проектных папок, исходного кода перед рискованными изменениями.

Логика: Используем дуэт модулей os и shutil. shutil — это «швейцарский нож» для файловых операций высокого уровня. Мы создаём целевую папку (если её нет) и копируем туда каждый файл из источника.

Код:

import shutil
import os

def backup_files(src_dir, dest_dir):
    # Создаём папку назначения, если её нет
    if not os.path.exists(dest_dir):
        os.makedirs(dest_dir)

    # Копируем каждый файл
    for file in os.listdir(src_dir):
        full_file_name = os.path.join(src_dir, file)
        if os.path.isfile(full_file_name):
            shutil.copy(full_file_name, dest_dir)
            print(f"Backed up {file} to {dest_dir}")

# Используем функцию
source = '/path/to/source/directory'
destination = '/path/to/destination/directory'
backup_files(source, destination)

Почему это важный навык: Регулярное резервное копирование — это не паранойя, а профессиональная привычка. Этот скрипт можно усовершенствовать, добавив дату в имя папки назначения и запуская его по расписанию (об этом ниже в FAQ).

Продвинутый лайфхак: Если нужно сжать бэкап в zip-архив для экономии места, используйте shutil.make_archive("backup_20240527", "zip", src_dir). Это одна строка вместо цикла.

Шаг 5: Очистка CSV от пустых строк

Задача: Подготовить данные к анализу в Excel, Power BI или Python-библиотеках (Pandas). «Грязные» данные с пустыми строками ломают сводные таблицы и искажают результаты.

Логика: Модуль csv — наш союзник. Мы построчно читаем файл, фильтруем строки, где все ячейки пусты (используя any(row)), и записываем только «чистые» данные обратно.

Код:

import csv

def clean_csv(file_path):
    # Читаем файл и фильтруем пустые строки
    with open(file_path, 'r') as infile:
        reader = csv.reader(infile)
        rows = [row for row in reader if any(row)]

    # Записываем очищенные данные обратно
    with open(file_path, 'w', newline='') as outfile:
        writer = csv.writer(outfile)
        writer.writerows(rows)

    print("Empty rows removed from CSV")

# Используем функцию
file = '/path/to/your/data.csv'
clean_csv(file)

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

Гибкая настройка: Часто нужно удалить не все пустые строки, а только те, где пусто в ключевом столбце (например, «Email»). Замените условие фильтра на if row[2] (где 2 — индекс столбца).

⚠️ Золотое правило: Скрипт перезаписывает исходный файл. Всегда работайте с копией или модифицируйте код для записи в новый файл (например, cleaned_data.csv), пока не убедитесь в правильности работы.

FAQ: Ответы на частые вопросы

1. Скрипт не видит файлы. Что не так?
В 95% случаев проблема в пути. Используйте абсолютный путь. На Windows: C:UsersIvanDesktopПапка (обратите внимание на двойные слеши или сырую строку r"C:..."). Всегда проверяйте существование пути в самом начале скрипта: if os.path.exists(folder_path):.

2. Как сделать скрипт устойчивым к ошибкам?
Используйте блоки try...except. Это профессиональный подход, который убережёт вашу программу от краха, если файл не найден или нет прав на запись. Это базовый навык для любого продакшн-кода.

try:
    with open('important.txt', 'r') as f:
        data = f.read()
except FileNotFoundError:
    print("Файл не найден. Проверьте путь.")
except PermissionError:
    print("Нет прав на чтение файла.")

3. Как запускать скрипты автоматически, например, каждый день в 9 утра?
Это следующий уровень автоматизации. На Windows используйте «Планировщик заданий». На macOS и Linux — системный демон cron. Из самого Python можно использовать библиотеки вроде schedule для простых задач или APScheduler для сложных. Например, ваш бэкап может запускаться сам каждую пятницу вечером.

4. Как обрабатывать только файлы конкретного типа (например, PDF)?
Используйте метод .endswith() в условии. Это универсальный паттерн для фильтрации.

for filename in os.listdir('.'):
    if filename.lower().endswith(('.pdf', '.jpg', '.png')):
        # Делаем что-то с изображениями и PDF

Вывод и призыв к действию

Вот и всё. Вы только что прошли ускоренный курс по практической автоматизации на Python. Эти 5 скриптов — не просто код, это ваши новые сотрудники, которые работают бесплатно, не устают и не ошибаются (если, конечно, вы их правильно «обучили»). Их ROI (окупаемость инвестиций) колоссален: несколько часов на изучение экономят сотни часов рутины в будущем.

Ваш карьерный трек начинается с действий:

  1. Примените сегодня. Выберите самую назойливую рутинную задачу — переименовать фото, почистить выгрузку, сделать бэкап рабочей папки. Адаптируйте подходящий скрипт и запустите его. Первый успех — лучший мотиватор.
  2. Модифицируйте. Не бойтесь менять код. Подставьте свои пути, измените условия, добавьте логирование. Эксперимент — путь к пониманию.
  3. Скомбинируйте. Создайте «швейцарский нож»: скрипт, который делает бэкап, затем чистит архивные файлы и высылает вам email-отчёт о выполненной работе. Так рождаются мощные инструменты.
  4. Прокачивайте навык. Освоив файлы, переходите к автоматизации браузера (Selenium), работе с API (requests), парсингу данных. Это прямые пути к повышению вашей ценности на рынке труда.

Помните, автоматизация — это суперсилка современного специалиста. Начните с этих пяти скриптов, и вы уже никогда не будете прежним. Удачи в автоматизации!