Обсудить задачу ↗

← Все статьи

РАЗРАБОТКА · ЧТЕНИЕ 4 МИН

Как автоматизировать рутинные задачи с помощью Python

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

Python часто выбирают для автоматизации не потому, что он «лучший», а потому, что для него готовы библиотеки почти под любую офисную задачу: Excel, CSV, PDF, почта, API. Но скрипт, написанный на коленке, может навредить: перезаписать файл или молча пропустить ошибку. Ниже — практичный подход.

Какие задачи подходят

Автоматизировать стоит операции, которые повторяются по одному и тому же правилу и тратят ощутимое время:

  • объединение нескольких Excel- или CSV-файлов в один свод;
  • переименование и раскладка файлов по папкам;
  • проверка данных по правилам и список найденных расхождений;
  • формирование документов и отчётов по шаблону;
  • загрузка данных из API или открытых источников.

Если правила меняются каждый раз или требуют суждения человека, сначала формализуйте правила, а только потом программируйте.

Подготовка

Установите Python с сайта python.org и нужные библиотеки командой в терминале:

pip install pandas openpyxl

Библиотека pandas работает с таблицами, openpyxl нужна ей для чтения и записи файлов .xlsx. Для проекта удобно создать отдельную папку и виртуальное окружение, чтобы библиотеки разных задач не конфликтовали.

Пример 1: свод из нескольких Excel-файлов

Допустим, филиалы присылают отчёты в одном формате в папку отчёты. Скрипт собирает их в один файл и добавляет столбец с именем источника:

from pathlib import Path
import pandas as pd

папка = Path("отчёты")
части = []

for файл in sorted(папка.glob("*.xlsx")):
    таблица = pd.read_excel(файл)
    таблица["Файл"] = файл.name
    части.append(таблица)

if not части:
    raise SystemExit("В папке нет файлов .xlsx")

свод = pd.concat(части, ignore_index=True)
свод.to_excel("свод.xlsx", index=False)
print(f"Объединено файлов: {len(части)}, строк: {len(свод)}")

Столбец «Файл» позволяет потом найти, из какого отчёта пришла строка. Скрипт предполагает, что у всех файлов одинаковые столбцы; если это не так, результат нужно проверять, а не принимать на веру.

Пример 2: безопасная работа с файлами

Любую операцию, которая меняет файлы, сначала запускайте в режиме «только показать». Этот скрипт добавляет к PDF-файлам дату, но переименование включено только после проверки вывода:

from pathlib import Path
from datetime import date

ПРИМЕНИТЬ = False   # поменяйте на True после проверки
папка = Path("входящие")
префикс = date.today().strftime("%Y-%m-%d")

for файл in папка.glob("*.pdf"):
    новый = файл.with_name(f"{префикс}_{файл.name}")
    if новый.exists():
        print(f"Пропуск, уже есть: {новый.name}")
        continue
    print(f"{файл.name} -> {новый.name}")
    if ПРИМЕНИТЬ:
        файл.rename(новый)

Ошибки и журнал

Скрипт, который сломался и ничего не сообщил, хуже ручной работы. Минимум: записывать, что обработано, и не останавливать весь процесс из-за одного плохого файла.

import logging
logging.basicConfig(filename="работа.log", level=logging.INFO,
                    format="%(asctime)s %(levelname)s %(message)s", encoding="utf-8")

for файл in папка.glob("*.xlsx"):
    try:
        данные = pd.read_excel(файл)
        logging.info("Прочитан %s, строк: %s", файл.name, len(данные))
    except Exception:
        logging.exception("Не удалось прочитать %s", файл.name)

Запуск по расписанию

В Windows задачу можно добавить в «Планировщик заданий»: программа — путь к python.exe, аргумент — путь к скрипту. В Linux и macOS используется cron. Перед настройкой расписания несколько раз запустите скрипт вручную и убедитесь, что результат стабилен.

Ограничения

  • Скрипт зависит от формата входных файлов: добавили столбец — нужно проверить код.
  • Для запуска нужен компьютер или сервер, на котором установлен Python.
  • Файлы с паролями и данные клиентов храните отдельно от кода и не отправляйте их в чужие сервисы.
  • Если задача сводится к нескольким формулам, Python избыточен — см. «Полезные формулы Excel».
Алгоритм. 1) Запишите шаги вручную. 2) Определите входные данные и ожидаемый результат. 3) Сделайте скрипт для одного файла. 4) Добавьте режим проверки и журнал. 5) Проверьте на копии данных и только потом подключайте расписание.

Есть похожая задача?

Опишите, что сейчас делается вручную. Сначала уточним исходные данные и ограничения, затем обсудим объём работ.

Обсудить задачу с DoneCore ↗