Telegram Web Link
Получение аудиопотока с микрофона

Библиотека PyAudio предоставляет возможности для записи аудиопотока с различных устройств.

PyAudio работает посредством кросс-платформенной библиотеки PortAudio (поэтому необходимо заранее установить пакет разработки portaudio19-dev).

В приведенном примере мы создаем объект класса PyAudio и открываем поток с рядом констант для настройки аудиопотока, поступающего с микрофона (для выбора другого устройства нужно передать его номер в качестве аргумента input_device_index).

Данный объект потока позволяет считывать с устройства с помощью метода stream.read(). Полученную информацию мы можем использовать для дальнейшего анализа и модификации.

В примере же мы просто считываем 10 секунд, после чего записываем их в аудио-файл wav.

#pyaudio #audio
Защищаем исходный код обфускацией

Обфускация кода — это превращение исходного кода в нечитаемый для человека вид, при этом сохраняя всю функциональность программы.

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

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

В Python есть отличная библиотека pyarmor, предназначенная именно для этого. Пример использования этого пакета в терминале представлен выше на картинке.

#pyarmor
Библиотека символьной математики для Python SymPy

В отличие от численных вычислений, символьная математика работает с математическими объектами, такими как переменные, выражения и уравнения, в абстрактной форме, а не приближенно численно.

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

#python
Асинхронный фреймворк для разработки сетевых приложений Twisted

Фреймворк предоставляет реализацию множества протоколов, таких как TCP, UDP, SSL/TLS, DNS, и других, используя асинхронный стиль программирования.

Код выше создает TCP-сервер, прослушивающий порт 1234, и при подключении клиента создает экземпляр MyProtocol, который обрабатывает данные в методе dataReceived. В приведенном примере, сервер просто отправляет обратно полученные данные. Twisted также предоставляет возможности для работы с асинхронными задачами, таймерами, и другими асинхронными концепциями. Это позволяет создавать эффективные и отзывчивые сетевые приложения.

#python
PyAutoGUI

PyAutoGUI позволяет Python управлять мышью и клавиатурой для автоматизации взаимодействия с другими приложениями. Пакет работает в Windows, macOS и Linux на Python 2 и 3.

Из ключевого функционала можно выделить следующее:

— Передвижение курсора и нажатие на кнопки мыши;
— Набор текста, например для заполнения форм;
— Скриншоты, поиск указанных изображений на экране (например, иконки) и нажатие на них;
— Поиск приложения на экране, изменение размера его окна, перемещение по экрану и т. д.

Основные функции показаны в примере на картинке выше, остальное — в документации проекта.

#pyautogui
Временные файлы

В стандартной библиотеке Python есть модуль tempfile, который содержит классы и методы для корректной работы со временными файлами и директориями.

Функция TemporaryFile создает временный файл в системной директории и возвращает файлоподобный объект.

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

Также другие процессы и приложения не смогут получить доступ к этому временному файлу.

#tempfile
Управление Docker контейнерами с помощью docker-py

docker-py – это официальная библиотека Python для Docker, предоставляющая API для взаимодействия с Docker Daemon. С её помощью можно автоматизировать процессы создания, запуска, остановки и удаления контейнеров, работы с образами, сетями и томами Docker.

import docker

# Создание клиента
client = docker.from_env()

# Запуск контейнера
container = client.containers.run("ubuntu:latest", "echo Hello, docker-py!", detach=True)

# Получение логов контейнера
print(container.logs().decode())

# Остановка и удаление контейнера
container.stop()
container.remove()

В данном примере мы создаем клиента Docker, используя переменные окружения текущей сессии. Затем мы запускаем контейнер из образа ubuntu:latest, выполняем в нем команду echo, выводим логи работы контейнера и в конце останавливаем и удаляем контейнер.

Управление образами с помощью docker-py:
# Получение списка всех образов
images = client.images.list()

# Вывод информации о каждом образе
for image in images:
print(f'ID: {image.id}, Теги: {image.tags}')


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

#python #docker #dockerpy
Работа с ip адресами

Если вам приходится писать на Python программы для работы с сетью — это значит, что вам может очень пригодиться модуль ipaddress.

Одним из вариантов его использования является генерация списка IP-адресов из диапазона адресов, заданных в формате CIDR (Classless Inter-Domain Routing, или бесклассовая адресация).

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

#ipaddress
Работаем с USB

PyUSB — это библиотека, которая обеспечивает легкий доступ к USB. Имеет поддержку изохронной передачи, если её поддерживает бэкенд.

Основные методы для работы с USB, такие как find(), show_devices() и т. д, хранятся в usb.core.

Пакет usb.util содержит вспомогательные функции.

Функция find() используется для поиска устройств, подключенных к системе.

Также есть реализация внешнего и внутреннего интерфейса, для изоляции API от деталей реализации системы. Связующим звеном между двумя слоями является интерфейс IBackend.

PyUSB поставляется со встроенными бэкэндами для libusb 1.0, libusb 0.1 и OpenUSB.

#python #PyUSB
Подсчет количества слов в текстовом файле

На этом примере в Python мы прочитаем текстовый файл и посчитаем количество слов в нем.
Возвращаем значение по указанному ключу с помощью метода setdefault()

Метод setdefault() в Python возвращает значение по указанному ключу из словаря. Если ключ отсутствует в словаре, метод добавляет ключ в словарь со значением по умолчанию, а затем возвращает это значение.

Метод setdefault() имеет два параметра:

— Ключ, по которому необходимо получить значение.
— Значение по умолчанию, которое будет добавлено в словарь, если ключ отсутствует.


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

В стандартной библиотеке есть максимально удобный пакет pathlib для простой работы с файловыми путями.

Для представления пути к файлу есть класс Path, с объектами которого уже можно производить операции. Например, методы exists() и is_dir() проверяют, существует ли файл и является ли он директорией.

Но самой классной фичей является замена os.path.join() на более удобный и элегантный вариант с использованием слэшей, как показано на картинке.

Итого, пакет pathlib может стать частичной заменой os в некоторых случаях при работе с файловыми путями.

#pathlib
Делаем ошибки более читаемыми

В Python есть удобный модуль pretty_errors, который делает стандартный вывод исключений и их traceback более удобным для чтения и красивым в целом.

Установить его можно через пакетный менеджер pip. А для того, чтобы он заработал, достаточно импортировать его в ваш код.

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

Также модуль можно модифицировать, указав параметры в конфиге. Подробнее можете почитать в документации модуля.

#python #pretty_errors
Форматируем строку для URL-адреса

Для начала стоит вспомнить, что слаг (slug) — это уникальная строка-идентификатор, понятная человеку и содержащая только "безопасные" символы: латинские символы в нижнем регистре, цифры и дефис.

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

Выше в коде мы написали простую функцию, где использовали методы lower() для приведения в нижний регистр и strip() для удаления пробелов слева и справа.

Также для удаления некоторых символов и замены на знак дефиса были использованы регулярные выражения и встроенный пакет re для работы с ними.

#python #re
Тестирование на pytest

pytest — ближе по духу к языку Python нежели unittest, которая накладывает определенные обязательства при разработке тестов. Например, создание классов-наследников от TestCase или выполнение определенной процедуры запуска тестов.

Но при разработке на pytest ничего этого делать не нужно. Вы просто пишете функции, которые должны начинаться с "test_" и используете assert, встроенные в Python.

Также он поддерживает запуск тестов на unittest и nose, то есть полная обратная совместимость с ними.

#python #pytest #assert
dict.get()

dict.get() — это метод словаря, который используется для получения значения по заданному ключу. Однако, в отличие от обращения к элементу словаря с использованием квадратных скобок (dict[key]), метод get() предоставляет дополнительную возможность задать значение по умолчанию, которое будет возвращено, если ключ не найден в словаре.

Синтаксис метода get() выглядит так:

value = dict.get(key, default)

key: Ключ, по которому производится поиск в словаре.
default (необязательный): Значение, которое будет возвращено, если ключ не найден в словаре. Если default не указан, и ключ не найден, метод вернет None.

#python
Работаем с картинками в Python

Библиотека Pillow — это очень мощный, быстрый и удобный инструмент для обработки графики в Python.

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

Метод Image.open('resources/img/cat.jpg') считывает картинку из папки.

img.convert('L') трансформирует картинку в черно-белую.

ImageOps.invert(image) обращает цвета.

img.transpose(Image.FLIP_LEFT_RIGHT) вертикально отзеркаливает картинку.

img.save('grayscale_cat.jpg') сохранит картинку на диске.

Больше официальных примеров и документацию можно посмотреть тут.

Пример можно посмотреть тут.

#pillow
Функция math.perm()

math.perm() используется для определения количества возможных способов выбора и расположения m элементов из набора n элементов. Этот метод включен в модуль math.

Он требует указания двух параметров: nобщее число элементов в наборе, и m — число элементов в каждой возможной выборке. Результатом выполнения функции является целочисленное значение, представляющее число таких перестановок. Если n меньше m, функция возвратит 0.

Пример использования: расчет количества перестановок трех элементов из пяти. Это демонстрирует, сколько существует вариантов формирования трехэлементных подмножеств из пятерки.

#python
Важное про цифры и Юникод

0, 1, 2, 3, 4, 5, 6, 7, 8, 9 — не единственные символы, которые считаются цифрами. Python следует правилам Юникода и обрабатывает несколько сотен символов как цифры. Полный список находится здесь.

Это крайне важно знать, потому что эти символы влияют на такие функции, как int, unicode.isdecimal и даже re.match.

Думаю, в один момент это знание сэкономит вам время на исправление "бага" с такими странными символами. Предупрежден — значит вооружен.

#python #unicode
Включаем предупреждения об ошибках или исключениях с помощью модуля warnings

Модуль warnings предоставляет возможность управления предупреждениями, которые могут быть выведены во время выполнения программы.

Модуль warnings полезен, когда необходимо предупредить пользователя о каком-либо условии в программе и это условие не требует создания исключения и завершения программы.

#python
2025/02/22 17:15:51
Back to Top
HTML Embed Code: