Продолжаем обзор литературы по питону и сегодня книга, про которую вы спрашиваете чаще всего — «Автоматизация рутинных задач с помощью Python». Второе издание за авторством Эла Свейгарта — профессионального разработчика и преподавателя.
Для кого эта книга
И первое, что вам нужно знать про эту книгу — она не для тех, кто хочет стать профессиональным программистом на питоне. Это книга для тех, кто хочет программировать на Python на любительском уровне. Кому язык нужен здесь и сейчас для решения самых разных небольших прикладных задач.
И это накладывает некоторые ограничения на темы, которые тут разбираются, или наоборот, не разбираются. Так здесь вы не найдете информацию про ООП, списковые включения или генераторы. Обычно, за отсутствие ООП, я сразу снимаю с книги балл, но исходя из того, что Эл Свейгарт сразу об этом предупреждает и четко определяет целевую аудиторию книги, тут я снижать балы не буду.
Кстати, о целевой аудитории, скажу пару слов о том, чем любители отличаются от профессионалов. И я глубоко убежден, что профессиональные программисты — это программисты, которые написанием программ зарабатывают себе на жизнь, не важно 40 тысяч в месяц или 400. Главное, что это их кормит. Все остальные это любители.
Обратите внимание, что я ничего не говорю про качество написания кода.
Теоретически любитель может лучше знать язык и лучше уметь программировать чем профессионал. Однако он программирует не каждый день по 8 часов, а лишь изредка и для себя. Возможно он работает над каким-то небольшим собственным проектом или использует Python для упрощения и автоматизации каких-то своих текущих рабочих задач.
И вот «Автоматизациция рутинных задач« как раз про это. И я вам могу точно сказать, что для написания таких скриптов не нужно знать ООП. Достаточно базового уровня программирования, знания библиотек, немного усидчивости, смекалки, природного любопытства и умения пользоваться интернетом.
Вводную закончил, теперь давайте ближе к содержанию. И наша книга состоит из двух частей.
Введение в программирование на Python
Первая посвящена непосредственно языку программирования, а вторая уже более практическая, про различные библиотеки и задачи, которые с помощью них можно решать.
Начнем с первой, про язык, и она мне понравилась уже с первых страниц. Эл Свейгарт всё подробно и легко рассказывает, а также приводит много схем и иллюстраций:
Единственное, в какой-то момент я встретил имена переменных в нотации lowerCamelCase. Обычно, за такую запись имён, я снимаю баллы. Но тут мне стало интересно как автор будет выкручиваться. Ведь он позиционирует себя как программист на Python, а не на С# или JavaScript.
И что самое интересное, сделал он это изящно. Эл Свейгарт объяснил, что да, это не совсем по канонам и другие разработчики могут скептически отнестись к таким именам. Но ему так нравится больше, а в PEP8 есть оговорка, что в некоторых исключительных случаях можно отойти от официальных рекомендаций и Эл считает свой случай именно таким. Поэтому тут снижать балы я также не буду.
А вот за пробелы в строках внутри функции print() всё же немного снижу. Хотя, как вы хорошо знаете, лишние пробелы на работу программы не влияют.
При этом схема последовательного преобразования типов данных выглядит очень хорошо, как и блок схемы для инструкции if else. Чем-то это похоже на Тони Гэддиса или Эрика Фримена. Такие блок схемы всегда помогают лучше и быстрее понять, то как работают условия.
После условий мы логично переходим к циклу while, который также представлен блок-схемой и не одной. Разумеется к каждой такой иллюстрации есть код на Python с подробными построчными описаниями.
После 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.
В 20 главе вы научитесь управлять клавиатурой, мышью и экраном. И собственно на этом Автоматизация рутинных задача на Python.
Заключение
Что ж, настало время выводов и это отличная книга. Она полностью оправдывает своё название и целевую аудиторию. Да, вы тут не узнаете про ООП, декораторы и другие профессиональные возможности питона, но вы научитесь базовому программированию и написанию небольших скриптов для решения самых разных задач. От работы с файлами и сетью до управления мышью и экраном. Если вас это устроит, то смело покупайте ей. Или можете почитать книгу бесплатно на официальном сайте.