Рецензия на книгу
Автоматизация рутинных задач с помощью Python

Эл Свейгарт

Обложка книги Автоматизация рутинных задач с помощью Python (Эл Свейгарт)

Краткая рецензия

Книга для новичков в Python, которые хотят не только научиться программировать, но и использовать питон для решения и автоматизации повседневных задач.

В первой части книги вы познакомитесь с синтаксисом и базовыми конструкциями Python, а во второй изучите различные библиотеки, которые упрощают разработку и дополняют ваши программы.

Во второй части разбирается работа с файлами, регулярные выражения, парсинг сайтов, обработка Excel-файлов, создание docx и pdf документов, взаимодействие с Google таблицами, а также отправка email-сообщений и работа с изображениями.

Полная рецензия

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

Для кого эта книга

И первое, что вам нужно знать про эту книгу — она не для тех, кто хочет стать профессиональным программистом на питоне. Это книга для тех, кто хочет программировать на Python на любительском уровне. Кому язык нужен здесь и сейчас для решения самых разных небольших прикладных задач.

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

Кстати, о целевой аудитории, скажу пару слов о том, чем любители отличаются от профессионалов. И я глубоко убежден, что профессиональные программисты — это программисты, которые написанием программ зарабатывают себе на жизнь, не важно 40 тысяч в месяц или 400. Главное, что это их кормит. Все остальные это любители.

Обратите внимание, что я ничего не говорю про качество написания кода.

Теоретически любитель может лучше знать язык и лучше уметь программировать чем профессионал. Однако он программирует не каждый день по 8 часов, а лишь изредка и для себя. Возможно он работает над каким-то небольшим собственным проектом или использует Python для упрощения и автоматизации каких-то своих текущих рабочих задач.

И вот «Автоматизациция рутинных задач« как раз про это. И я вам могу точно сказать, что для написания таких скриптов не нужно знать ООП. Достаточно базового уровня программирования, знания библиотек, немного усидчивости, смекалки, природного любопытства и умения пользоваться интернетом.

Вводную закончил, теперь давайте ближе к содержанию. И наша книга состоит из двух частей.

Введение в программирование на Python

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

Начнем с первой, про язык, и она мне понравилась уже с первых страниц. Эл Свейгарт всё подробно и легко рассказывает, а также приводит много схем и иллюстраций:

Объяснение приоритета операций

Схема с объяснением приоритета операций.

Единственное, в какой-то момент я встретил имена переменных в нотации lowerCamelCase. Обычно, за такую запись имён, я снимаю баллы. Но тут мне стало интересно как автор будет выкручиваться. Ведь он позиционирует себя как программист на Python, а не на С# или JavaScript.

Пример нотации lowerCamelCase

Пример нотации lowerCamelCase

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

А вот за пробелы в строках внутри функции print() всё же немного снижу. Хотя, как вы хорошо знаете, лишние пробелы на работу программы не влияют.

Пробелы в функции print()

Пробелы в функции print()

При этом схема последовательного преобразования типов данных выглядит очень хорошо, как и блок схемы для инструкции if else. Чем-то это похоже на Тони Гэддиса или Эрика Фримена. Такие блок схемы всегда помогают лучше и быстрее понять, то как работают условия.

Последовательное преобразование типов данных

Последовательное преобразование типов данных

После условий мы логично переходим к циклу while, который также представлен блок-схемой и не одной. Разумеется к каждой такой иллюстрации есть код на Python с подробными построчными описаниями.

Блок схема для цикла while

Блок схема для цикла while

После while мы знакомимся с for, а также с импортом встроенных библиотек, что для данной книги важно, ведь мы читаем её чтобы писать небольшие полезные программы, а они практически всегда основаны на использовании различных пакетов и библиотек, встроенных или внешних.

Хотя одна из первых программ, которую приводит Эл Свейгарт — это «камень, ножницы, бумага», что не сильно практично. Но зато в ней есть циклы, условия, а также работа с модулем random. Да и в целом, пока мы находимся в разделе про сам язык, поэтому ожидать тут какой-то пользы с точки зрения решения реальных задач еще рано.

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

Пример контрольных вопросов

Пример контрольных вопросов

Правда я не нашел финальных исходников к этим проектам, однако нашел кое-что другое. Во-первых, вы можете бесплатно почитать эту книгу на английском языке прямо на сайте автора. Да, даже не смотря на то, данная бумажная книга уже была продана тиражом в 500 000 экземпляров, она еще и бесплатно доступна онлайн на сайте автора. Там же вы можете почитать и другие книги Эла Свейгарта.

А еще на Udemy вы можете пройти официальный курс по данной книге. Курс платный и, разумеется, на английском. Но всё-равно, это круто. Если же вы ищите хороший курс на русском языке, с поддержкой преподавателя и практикой, то жду вас у себя.

Но давайте снова к книге. После функций Эл переходит к спискам, затем словарям, а далее и к строкам. Не то чтобы мы не изучали строки ранее, просто в 6 главе они разбираются чуть подробнее: срезы, методы, и всё такое. Также тут вы узнаете про модуль для копирования строк в буфер обмена.

Автоматизация рутинных задач

Собственно, на строках изучение чистого питона в данной книге заканчивается и мы переходим к её второй части — автоматизации задач. Вторая часть состоит из 14 глав, посвященных разным темам. Пробегусь по каждой из глав и расскажу, что вас ждет, а также где и как вам могут пригодится рассмотренные автором вопросы.

Итак глава 7 — регулярные выражения. Сказать, что это очень полезная тема — ничего не сказать. Регулярные выражения применяются повсюду. С помощью них вы можете извлечь из текста любую структурированную информацию. Надо выдернуть из большого объема данных телефонные номера или имейлы или что-то еще, то регулярные выражения вам в помощь.

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

А вот следующие две главы, 9 и 10 — очень важные, так как они про работу с файлами. И это не только чтение и запись, но и работа с путями, а также копирование, перемещение и удаление, в том числе в корзину. Тут же вы научись обходить каталоги, а также создавать и распаковывать zip-архивы.

После идет 11 глава и она посвящена отладке. Это на случай если ваша программа подразумевает какие-то падения и вам бы хотелось логировать эти моменты.

Далее, в 12 главе, вы научитесь работать с сетью, в том числе сохранять и парсить интернет сайты с помощью библиотеки BeautifulSoup. Например, сможете написать небольшой скрипт, который будет следить за сайтом конкурента и если конкурент изменит цену на товар, то вы сразу же об этом узнаете. Здорово? Конечно.

Тут же вы научитесь работать с Selenium — это такая библиотека, которая позволяет управлять браузером прямо из питона. То есть вы можете из Python скрипта открыть произвольный сайт, кликнуть на нём по каким-то ссылкам или кнопкам, отправить спам комментарий конкуренту :) И всё это в автоматическом режиме без участия человека. Запустили программу, и понеслось.

Хочу сразу заметить, что с одной стороны Эл довольно подробно и, что самое главное, понятно всё объясняет, в том числе рассматривает распространенные ошибки. Однако, с другой стороны, вы не найдете тут какого-то детального и подробного руководства. Автор дает только базу и приводит самые простые примеры.

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

Например, на то, чтобы запустить Селениум, открыть сайт и автоматически кликнуть по кнопке, у меня ушло около 20 минут. При этом в процессе мне пришлось не только читать книгу, но и уточнять многие моменты в официальной документации. Имейте это ввиду.

После Селениума мы переходим к работе с Excel. И собственно после 13 главы прочитать или записать данные в excel-файл вам не составит труда. А в 14 главе вы освоите еще и Google Таблицы.

В 15 вы научитесь работать с PDF и Word документами, в том числе узнаете как создавать PDF файлы на основе docx.

Итого к данному моменту вы легко сможете написать небольшую программу, которая, скажем, берет из excel файла список учеников, а потом генерирует для каждого из них индивидуальный pdf-документ. Представьте, что на работе вам нужно выдать 1000 справок всем сотрудникам. Вручную выписывать каждую может занять несколько дней, а написать скрипт, который автоматизирует данную задачу можно за 30 минут. Именно в этом сила питона и данная книга как раз про такие задачи.

Но давайте двигаться дальше. 16 глава посвящена работе с csv и json файлами, что также бывает полезным. А в 17 главе рассказывается про работу с датой в временем. Тут же вы найдете информацию про многопоточность и запуск других программ прямо из Python. И это тоже периодически приходится делать.

В 18 главе вы узнаете как из Python скриптов отправлять электронные письма и SMSки через сервис Twilio.

А 19 глава посвящена работе с изображениями с помощью библиотеки Pillow. Создать, обрезать, повернуть и так далее. Pillow очень популярная библиотека и мне сложно назвать проект, в котором я её не использовал.

Так, например, на нашем сайте финальный сертификат генерируются автоматически как раз с помощью Pillow.

Сертификат об окончании Python курсов

Пример генерации с помощью Pillow

В 20 главе вы научитесь управлять клавиатурой, мышью и экраном. И собственно на этом Автоматизация рутинных задача на Python.

Заключение

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