Удаление страниц PDF-файла
Библиотека PyMuPDF включает в себя довольно много сложных методов, которые упрощают удаление страниц из файла PDF. Он позволяет указать либо одну страницу (используя метод deletePage()), либо диапазон номеров страниц (используя метод deletePageRange()), либо список с номерами страниц (используя метод select()).
В следующем примере показано, как использовать список для выбора страниц, которые нужно сохранить в исходном документе. Имейте в виду, что страницы, которые не указаны, не будут частью выходного документа. В нашем случае выходной документ содержит только первую, вторую и четвертую страницы.
#python
Библиотека PyMuPDF включает в себя довольно много сложных методов, которые упрощают удаление страниц из файла PDF. Он позволяет указать либо одну страницу (используя метод deletePage()), либо диапазон номеров страниц (используя метод deletePageRange()), либо список с номерами страниц (используя метод select()).
В следующем примере показано, как использовать список для выбора страниц, которые нужно сохранить в исходном документе. Имейте в виду, что страницы, которые не указаны, не будут частью выходного документа. В нашем случае выходной документ содержит только первую, вторую и четвертую страницы.
#python
Многопоточность
В модуле
Параметр
Когда
#потоки #многопоточность
В модуле
threading
новый поток выполнения может начинаться с нового threading.Thread
и присвоения ему функции для выполнения.Параметр
target
ссылается на функцию (или вызываемый объект), который будет работать. Нить не начнет выполнение до start
, также не будет вызываться Thread
объекта.Когда
my_thread
завершается, вызов start
выкинет исключение RuntimeError. Если вы хотите запустить Thread в фоновом режиме, то передавайте daemon=True
или установите my_thread.daemon
в True
перед вызовом start()
.#потоки #многопоточность
Indico
Indico — это мощная библиотека Python для извлечения информации из неструктурированных текстов, изображений и PDF-файлов. Она позволяет вам выполнять задачи обработки естественного языка (NLP), компьютерного зрения (CV) и машинного обучения (ML) с помощью простых и понятных API.
https://pypi.org/project/indico/
Indico — это мощная библиотека Python для извлечения информации из неструктурированных текстов, изображений и PDF-файлов. Она позволяет вам выполнять задачи обработки естественного языка (NLP), компьютерного зрения (CV) и машинного обучения (ML) с помощью простых и понятных API.
https://pypi.org/project/indico/
МТС приглашает разработчиков на масштабную ИТ-конференцию True Tech Day 6 июня. Участие бесплатное.
6 июня в Москве соберутся эксперты крупных ИТ-компаний, чтобы обсудить кейсы внедрения ИИ в бигтехах и будущее разработки.
В программе:
— Выступления зарубежных спикеров с индексом Хирша более 50.
— Множество практических кейсов: узнай, как создаются крупные ML-проекты.
— Доклады по архитектуре, бэкенд-разработке и построению ИТ-платформ.
— AI-интерактивы и технологические квесты: собери сервак, взломай Теслу, создай ИИ-ассистента и поучаствуй в экстрим-кодинге.
— Пространство для нетворкинга,
…а еще after-party со звездным лайн-апом.
Участвуй очно или онлайн, обменивайся опытом и знакомься с ведущими специалистами со всей страны!
Ждем тебя и коллег 6 июня в МТС Live Холл.
Участие бесплатное, но офлайн-места ограничены.
Регистрируйся по ссылке: https://truetechday.ru/
6 июня в Москве соберутся эксперты крупных ИТ-компаний, чтобы обсудить кейсы внедрения ИИ в бигтехах и будущее разработки.
В программе:
— Выступления зарубежных спикеров с индексом Хирша более 50.
— Множество практических кейсов: узнай, как создаются крупные ML-проекты.
— Доклады по архитектуре, бэкенд-разработке и построению ИТ-платформ.
— AI-интерактивы и технологические квесты: собери сервак, взломай Теслу, создай ИИ-ассистента и поучаствуй в экстрим-кодинге.
— Пространство для нетворкинга,
Участвуй очно или онлайн, обменивайся опытом и знакомься с ведущими специалистами со всей страны!
Ждем тебя и коллег 6 июня в МТС Live Холл.
Участие бесплатное, но офлайн-места ограничены.
Регистрируйся по ссылке: https://truetechday.ru/
Полезные функции модуля itertools
Модуль
Давайте рассмотрим некоторые полезные функции из этого модуля:
1.
2.
3.
4.
5.
И это далеко не все функции, доступные в модуле
Модуль
itertools
- инструмент в Python
для работы с итерируемыми объектами. Он предоставляет различные функции для создания и манипулирования итераторами, что делает его незаменимым инструментом для разработчиков.Давайте рассмотрим некоторые полезные функции из этого модуля:
1.
itertools.count()
: Эта функция создает бесконечный итератор, который генерирует последовательность чисел, начиная с заданного значения. Это удобно использовать, например, при создании уникальных идентификаторов.2.
itertools.cycle()
: Эта функция создает итератор, который бесконечно повторяет элементы из исходной последовательности. Это может быть полезно, когда вам нужно обрабатывать данные циклически.3.
itertools.islice()
: С помощью этой функции можно получить срез элементов из итератора, подобно срезу для списков. Это позволяет работать с большими итерируемыми объектами без необходимости загрузки их в память целиком.4.
itertools.chain()
: Эта функция объединяет несколько итерируемых объектов в один, что упрощает итерацию по ним как по одному объекту.5.
itertools.groupby()
: Эта функция позволяет группировать элементы итерируемого объекта на основе заданного ключа. Это особенно полезно при анализе и обработке данных.И это далеко не все функции, доступные в модуле
itertools
. Он предоставляет множество возможностей для более эффективной итерации и манипуляции данными.Обрабатываем номера телефонов
Пакет
Основным классом, который представляет номер, является
В целом, пакет использовать достаточно просто, базовые примеры есть на картинке. Также можете посмотреть документацию для более продвинутого использования.
#python #phonenumbers
Пакет
phonenumbers
основан на библиотеке libphonenumber от Google, которая позволяет форматировать, парсить и проверять номера телефонов.Основным классом, который представляет номер, является
PhoneNumber
. Объект можно создать, вызвав метод parse()
и передав в аргументы номер телефона в виде строки. Вторым аргументом также можно указать страну.В целом, пакет использовать достаточно просто, базовые примеры есть на картинке. Также можете посмотреть документацию для более продвинутого использования.
#python #phonenumbers
Быстрый deque
Для
deque
предпочтительнее, чем обычный список, когда нужны более быстрые операции добавления и вытаскивания элементов с начала и конца контейнера.deque
обеспечивает линейную сложность O(1) для операций добавления и выталкивания, у стандартного списка сложность по этим операциям O(n).Для
deque
есть возможность использовать стандартные функции — sum
, min
, max
и другие.Преобразование текста в аудио на Python
Используя библиотеку
Для начала работы с
Чтобы сохранить синтезированную речь в аудиофайл, используется метод
#python #gtts
Используя библиотеку
gTTS (Google Text-to-Speech)
для Python
, можно легко преобразовывать текст в аудиофайлы. Эта библиотека использует API Google Translate
для синтеза речи, обеспечивая высокое качество преобразования. Установка библиотеки производится стандартным способом через pip
.Для начала работы с
gTTS
необходимо создать его экземпляр, передав текст, который нужно озвучить, в качестве первого аргумента. Также есть возможность указать язык озвучивания через опциональный аргумент, который по умолчанию установлен на английский.Чтобы сохранить синтезированную речь в аудиофайл, используется метод
save
, аргументом которого является имя файла.#python #gtts
Отлавливаем ошибки с помощью assert
Инструкция
Если выполнить инструкцию
Однако не нужно пытаться обработать исключение
В примере мы проверили, является ли переданный аргумент числовым типом данных. Если не является, то будет вызвано исключение и выведено указанное сообщение.
#исключения #assert
Инструкция
assert
принимает логическое выражение и необязательное сообщение. Она используется для проверки типов, значений аргумента и вывода функции, а также для отладки, поскольку останавливает программу в случае ошибки.Если выполнить инструкцию
assert
с логическим выражением, результат которого равен True
, ничего не произойдет. Но в случае с False
будет сгенерировано исключение AssertionError
.Однако не нужно пытаться обработать исключение
AssertionError
блоком try-except
. В таком случае assert
теряет свой смысл.В примере мы проверили, является ли переданный аргумент числовым типом данных. Если не является, то будет вызвано исключение и выведено указанное сообщение.
#исключения #assert
Сокращение ссылок с помощью PyShorteners
Вы наверняка сталкивались с сервисами по сокращению ссылок, даже если никогда не использовали их сами. Сокращённые ссылки часто встречаются в описаниях к видео на YouTube, в статьях и на множестве других ресурсов в интернете.
Создание сокращенной ссылки может показаться сложной задачей, но на самом деле это можно сделать всего за три строчки кода с помощью библиотеки
#python #pyshorteners
Вы наверняка сталкивались с сервисами по сокращению ссылок, даже если никогда не использовали их сами. Сокращённые ссылки часто встречаются в описаниях к видео на YouTube, в статьях и на множестве других ресурсов в интернете.
Создание сокращенной ссылки может показаться сложной задачей, но на самом деле это можно сделать всего за три строчки кода с помощью библиотеки
PyShorteners
, пример кода можно найти на фото.#python #pyshorteners
Обрабатываем естественный язык
TextBlob — удобный пакет для обработки текста. Он предоставляет простой API для погружения в общие задачи обработки естественного языка (NLP), такие как анализ тональности, пометку частей речи, перевод и многое другое.
Здесь особенно круто, что к объектам класса
Документация находится здесь, но некоторые примеры есть и на картинке выше. Еще важно, что несколько функций, например
#textblob
TextBlob — удобный пакет для обработки текста. Он предоставляет простой API для погружения в общие задачи обработки естественного языка (NLP), такие как анализ тональности, пометку частей речи, перевод и многое другое.
Здесь особенно круто, что к объектам класса
TextBlob
можно применять методы строк (upper
, split
, format
и т. д.) и в целом обращаться с ними как с обычными строками.Документация находится здесь, но некоторые примеры есть и на картинке выше. Еще важно, что несколько функций, например
translate()
, требуют подключения к интернету.#textblob
Упаковка параметров с помощью urlencode
Довольно часто приходится работать с разнообразными API и совершать get-запросы с передачей множества параметров. Чаще всего составление запроса в коде выглядит примерно так:
Смотрится не слишком презентабельно, однако есть слегка более длинный, но значительно улучающий читаемость кода вариант – функция
#трюки #urllib
Довольно часто приходится работать с разнообразными API и совершать get-запросы с передачей множества параметров. Чаще всего составление запроса в коде выглядит примерно так:
url = 'https://example.com?item={}&size={}&color={}&amount={}'.format('t-shirt', 'M', 'white', 5)
Смотрится не слишком презентабельно, однако есть слегка более длинный, но значительно улучающий читаемость кода вариант – функция
urlencode
из модуля urllib
.#трюки #urllib
Ещё одна пасхалка
Модуль
Но будет вызвано исключение, которое говорит "not a chance", что означает "ни единого шанса". Однако есть ещё один интересный момент, а именно – исходный код этого модуля.
Оказывается, интерпретатор CPython сначала запускает файл
#пасхалки #future
Модуль
__future__
позволяет подключать функционал из будущих версий языка. Например, можно попробовать импортировать фигурные скобки как в си-подобных языках.Но будет вызвано исключение, которое говорит "not a chance", что означает "ни единого шанса". Однако есть ещё один интересный момент, а именно – исходный код этого модуля.
Оказывается, интерпретатор CPython сначала запускает файл
future.c
, когда встречается импорт этого модуля. А само это исключение реализовано на этой строчке.#пасхалки #future
Работаем с атрибутами объектов
Помимо привычного обращения к атрибутам объектов через точку, в Python есть 4 специальных функции:
По названиям можно понять, что первые три отвечают за получение, установку и удаление атрибута. А последний проверяет, существует ли атрибут с указанным названием у объекта или нет.
Во всех функциях первыми двумя аргументами идут объект и название атрибута в виде строки. В
На практике использование подобного — довольно редкий случай, но иногда может сильно выручить, так что берите на вооружение.
#python #tips
Помимо привычного обращения к атрибутам объектов через точку, в Python есть 4 специальных функции:
getattr
, setattr
, delattr
и hasattr
.По названиям можно понять, что первые три отвечают за получение, установку и удаление атрибута. А последний проверяет, существует ли атрибут с указанным названием у объекта или нет.
Во всех функциях первыми двумя аргументами идут объект и название атрибута в виде строки. В
setattr
также нужно передать новое значение для атрибута.На практике использование подобного — довольно редкий случай, но иногда может сильно выручить, так что берите на вооружение.
#python #tips
Асинхронно скачиваем файлы
Имея список ссылок на картинки, которые нужно скачать, мы можем это сделать используя простой цикл
Но в таких ситуациях как эта (скачивание огромного количества небольших файлов) распараллеливание задачи существенно ускорит процесс.
Для этого воспользуемся функцией ThreadPoolExecutor из стандартного пакета
Далее метод
Но будьте внимательны: так как скачивание файла — это IO-операция, такой метод не ускоряет вычисления кода. Он лишь позволяет запустить скачивание следующего файла, не дождавшись пока скачается предыдущий.
#python #threading
Имея список ссылок на картинки, которые нужно скачать, мы можем это сделать используя простой цикл
for
, тем самым скачав их последовательно одна за одной. Но в таких ситуациях как эта (скачивание огромного количества небольших файлов) распараллеливание задачи существенно ускорит процесс.
Для этого воспользуемся функцией ThreadPoolExecutor из стандартного пакета
concurrent.futures
. Она позволяет запустить нашу функцию, в нескольких екземплярах в параллельных потоках. В конструкторе необходимо указать максимальное количество потоков, которые будут одновременно запущены. Далее метод
.map(download, urls)
создает екземпляры нашей функции для скачивания файла, и раскидывает в них элементы списка urls
. Но будьте внимательны: так как скачивание файла — это IO-операция, такой метод не ускоряет вычисления кода. Он лишь позволяет запустить скачивание следующего файла, не дождавшись пока скачается предыдущий.
#python #threading
Получаем данные о системе
Кроссплатформенная библиотека psutil позволяет получать информацию о процессоре, памяти, диске, сети, датчиках и запущенных процессах в системе. Примеры базового использования показаны на картинке.
Если говорить про практические применение, psutil полезен в основном для мониторинга системы, ограничения ресурсов процессов и управления запущенными процессами.
Помимо привычных Windows, MacOS и Linux, библиотека также поддерживает системы FreeBSD, OpenBSD, NetBSD, Sun Solaris и AIX.
#psutil
Кроссплатформенная библиотека psutil позволяет получать информацию о процессоре, памяти, диске, сети, датчиках и запущенных процессах в системе. Примеры базового использования показаны на картинке.
Если говорить про практические применение, psutil полезен в основном для мониторинга системы, ограничения ресурсов процессов и управления запущенными процессами.
Помимо привычных Windows, MacOS и Linux, библиотека также поддерживает системы FreeBSD, OpenBSD, NetBSD, Sun Solaris и AIX.
#psutil
Работа с методом str.replace() в Python
Метод принимает два основных аргумента: первый - это подстрока, которую нужно заменить в исходной строке, а второй - это подстрока, на которую происходит замена.
Кроме того, существует третий необязательный аргумент, определяющий количество замен старой подстроки на новую. Если он не указан, метод заменяет все вхождения.
#python #replace
Python
предлагает множество удобных встроенных методов для работы со строками. Один из таких методов - str.replace()
, который используется для замены частей строки.Метод принимает два основных аргумента: первый - это подстрока, которую нужно заменить в исходной строке, а второй - это подстрока, на которую происходит замена.
Кроме того, существует третий необязательный аргумент, определяющий количество замен старой подстроки на новую. Если он не указан, метод заменяет все вхождения.
#python #replace
PyAutoGUI
PyAutoGUI позволяет Python управлять мышью и клавиатурой для автоматизации взаимодействия с другими приложениями. Пакет работает в Windows, macOS и Linux на Python 2 и 3.
Из ключевого функционала можно выделить следующее:
— Передвижение курсора и нажатие на кнопки мыши;
— Набор текста, например для заполнения форм;
— Скриншоты, поиск указанных изображений на экране (например, иконки) и нажатие на них;
— Поиск приложения на экране, изменение размера его окна, перемещение по экрану и т. д.
Основные функции показаны в примере на картинке выше, остальное — в документации проекта.
#pyautogui
PyAutoGUI позволяет Python управлять мышью и клавиатурой для автоматизации взаимодействия с другими приложениями. Пакет работает в Windows, macOS и Linux на Python 2 и 3.
Из ключевого функционала можно выделить следующее:
— Передвижение курсора и нажатие на кнопки мыши;
— Набор текста, например для заполнения форм;
— Скриншоты, поиск указанных изображений на экране (например, иконки) и нажатие на них;
— Поиск приложения на экране, изменение размера его окна, перемещение по экрану и т. д.
Основные функции показаны в примере на картинке выше, остальное — в документации проекта.
#pyautogui
Поиск уникальных слов в текстовом файле в Python
Чтобы найти уникальные слова в текстовом файле в Python, необходимо очистить текст, найти слова, а затем найти уникальные.
Подробнее можно почитать здесь.
Чтобы найти уникальные слова в текстовом файле в Python, необходимо очистить текст, найти слова, а затем найти уникальные.
Подробнее можно почитать здесь.
Паттерн проектирования Singleton
Одиночка или же синглтон – это паттерн проектирования, описывающий объект, у которого имеется один единственный экземпляр.
Метод
В примере мы проверяем, есть ли значение у атрибута
То есть при вызове конструктора класса
#классы #паттерны
Одиночка или же синглтон – это паттерн проектирования, описывающий объект, у которого имеется один единственный экземпляр.
Метод
__new__
вызывается для создания экземпляра класса, перед вызовом __init__
. На вход первым аргументом метод принимает сам класс, а возвращать должен уже экземпляр (даже можно экземпляр и другого класса).В примере мы проверяем, есть ли значение у атрибута
instance
. Если нет, то присваиваем атрибуту экземпляр этого же класса. А если уже экземпляр создан, то просто его возвращаем.То есть при вызове конструктора класса
Singleton
, будет возвращаться один и тот же объект из памяти.#классы #паттерны