Читать книгу Быстрый Python. автоматизация рутинных задач за неделю - - Страница 4

Часть 1. Основы Python для автоматизации
Условия и циклы

Оглавление

Давайте представим самую обычную утреннюю рутину. Вы просыпаетесь, идете на кухню и смотрите на чайник. Ваш мозг мгновенно проводит молниеносную проверку: если чайник пустой, то нужно его наполнить водой и включить. Если же он полный, можно сразу нажимать кнопку. А потом, пока чай заваривается, вы, скорее всего, повторяете одно и то же действие несколько раз – помешиваете ложкой в кружке. Компьютер в своих задачах ведет себя точно так же. Он постоянно что-то проверяет и повторяет одни и те же действия сотни, тысячи раз. И сегодня мы научим его именно этому – принимать решения и работать в цикле.

Без этих двух концепций автоматизация просто невозможна. Любой полезный скрипт – это всегда комбинация условий и циклов. Условия – это развилки на дороге, которые говорят программе: «Если случилось вот это, иди налево, а если другое – тогда направо». Циклы – это та самая тропинка, по которой можно ходить кругами, пока не выполнится нужное условие, например, пока не переименуешь все файлы в папке.

Если бы да кабы – учим компьютер выбирать

В Python решение принимается с помощью оператора if, что в переводе с английского и означает «если». Конструкция выглядит очень похоже на обычную человеческую логику. Сначала мы задаем вопрос (условие), а потом говорим, что делать, если ответ «да» (True).

Вот простейший пример из жизни автоматизации. Допустим, у нас есть скрипт, который проверяет, есть ли в папке файлы с расширением .txt. Наш вопрос программе: «Если в имени файла встречается строка “.txt”?» Если да, то мы, к примеру, выводим сообщение, что текстовый файл найден. Код будет выглядеть как обычное предложение: если что-то верно, то сделай вот это. Красота в том, что условием может быть что угодно: проверка типа файла, сравнение размера, наличие определенного слова в тексте, текущее время или даже результат другой программы.

А что делать, если условие не выполнилось? Для этого есть продолжение – else (иначе). Это как план Б. Если файл не текстовый, то, может быть, его нужно переместить в другую папку или просто проигнорировать. Иногда вариантов больше двух – тогда на помощь приходит elif, что значит «иначе если». Это как длинная лестница проверок: если не первое, то проверь второе, если не второе, то третье и так далее. Например, скрипт, сортирующий файлы по типам, будет задавать целую цепочку вопросов: если расширение .jpg – в папку «Фото», иначе если .mp3 – в «Музыку», иначе если .pdf – в «Документы», а иначе – в «Разное». Попробуйте прямо сейчас мысленно пройтись по своей «Загрузкам» или «Рабочему столу». Сколько там файлов, которые можно рассортировать по таким простым правилам? Компьютер сделает это за секунду, не устанет и не ошибется.

Белка в колесе, или сила повторений

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

В Python чаще всего используются два типа циклов. Первый – это цикл for. Его логику проще всего понять на примере. Допустим, у вас есть корзина с яблоками, и вам нужно каждое взвесить. Вы берете первое яблоко, кладете на весы, записываете вес. Потом второе, третье и так далее, пока корзина не опустеет. Цикл for делает ровно это: он проходит по элементам какой-либо «коллекции» (например, списку имен файлов) и для каждого элемента выполняет указанный блок кода. Вам не нужно знать, сколько там всего файлов – десять или десять тысяч. Вы просто говорите: «Для каждого файла в этой папке сделай то-то». И он сделает. Это идеально подходит для обработки всего, что можно представить как набор элементов: строк в файле, писем в почтовом ящике, строк в таблице.

Второй тип – цикл while, что переводится как «пока». Он работает по другому принципу: не «для каждого», а «пока выполняется условие». Это как дежурный на вахте, который проверяет пропуска. Он будет выполнять свою работу (задавать вопросы) снова и снова, пока не сменится смена (пока условие не станет ложным). Например, ваш скрипт может мониторить папку, пока в нее не упадет новый файл, и тогда сразу его обработать. Или ждать, пока пользователь не введет правильный пароль, давая ему ограниченное количество попыток. Главное с этим циклом – не создать «вечный» вариант, то есть такое условие, которое никогда не станет ложным. Иначе ваш скрипт превратится в ту самую белку, которая будет бегать в колесе до скончания времен, пока вы не остановите его вручную.

Собираем пазл: условия внутри циклов

Настоящая магия начинается, когда мы соединяем эти два инструмента вместе. Это как если бы наша воображаемая белка в колесе не просто бежала, а на каждом круге смотрела по сторонам и принимала решение. Типичная и очень мощная конструкция в автоматизации выглядит так: цикл for проходит по всем файлам в папке, и для каждого файла оператор if проверяет какое-то условие (например, размер больше 10 МБ или дата создания старше месяца). И в зависимости от результата файл либо удаляется, либо копируется, либо переименовывается.

Давайте представим конкретную историю. Допустим, есть человек, который каждый день скачивает кучу отчетов. Файлы называются хаотично: «отчет_01.pdf», «data_final.xlsx», «итого_пятница.docx» и так далее. Ему нужно оставить только Excel-таблицы, созданные на прошлой неделе, и переместить их в отдельную папку для анализа. Вручную – это открыть папку, глазами искать .xlsx, смотреть свойства каждого, сравнивать даты, перетаскивать. Скучно и долго. Наш скрипт же сделает это в мгновение ока. Алгоритм будет простым: взять список всех файлов, для каждого файла проверить – если его расширение .xlsx И его дата создания попадает в диапазон прошлой недели, то скопировать его в целевую папку. Всего несколько строк кода, в которых for, if и несколько проверок работают как один слаженный механизм.

Подумайте на минуту, какая однообразная цифровая рутина есть в вашей жизни? Может, это ежемесячная сортировка фотографий из мессенджера? Или чистка почтового ящика от старых вложений? Или регулярная выгрузка данных из одной программы в другую? Практически в каждой такой задаче есть однотипные действия, повторяющиеся проверки. Там, где есть «если» и «повтори для каждого», – там живёт возможность для автоматизации.

Именно с этого момента ваши скрипты перестают быть простыми последовательностями команд. Они начинают «думать» – оценивать обстоятельства и методично, без устали выполнять задуманное. Вы даете им сценарий, а они играют свою роль. Это невероятно упрощает жизнь. Вам больше не нужно самому быть тем дежурным на вахте или той белкой в колесе. Вы становитесь тем, кто ставит задачу, нажимает кнопку «Пуск» и идет пить чай, пока компьютер послушно выполняет всю черновую работу. И в этом, пожалуй, и есть главный кайф автоматизации.

Быстрый Python. автоматизация рутинных задач за неделю

Подняться наверх