45969
Python Academy — один канал вместо тысячи учебников Чат канала: @python_academy_chat Сотрудничество: @zubar89 Канал включён в перечень РКН: https://rkn.link/TVu
Работа с YAML-Файлами в Python с Помощью Библиотеки PyYAMLPyYAML позволяет эффективно работать с файлами в формате YAML (YAML Ain't Markup Language), который широко используется для конфигураций, настроек и обмена данными в структурированной форме.
import yaml
data_to_write = {'name': 'John Doe', 'age': 30, 'city': 'Example City'}
with open('example.yaml', 'w') as file:
yaml.dump(data_to_write, file, default_flow_style=False)
with open('example.yaml', 'r') as file:
loaded_data = yaml.safe_load(file)
print(f"Загруженные данные: {loaded_data}")
example.yaml):age: 30
city: Example City
name: John Doe
PyYAML для записи словаря data_to_write в файл example.yaml и затем загружаем данные из этого файла обратно в переменную loaded_data.PyYAML предоставляет удобные средства для работы с данными в формате YAML в Python. Будь то сохранение конфигураций, обмен структурированными данными или другие сценарии, где YAML имеет преимущество, PyYAML обеспечивает легкость в использовании и читаемый код🐍
Selenium: Автоматизация веб-браузера в Pythonselenium - это библиотека, предназначенная для автоматизации веб-браузера в языке программирования Python. Она предоставляет удобные и эффективные средства для взаимодействия с веб-страницами, заполнения форм, нажатия кнопок и многих других действий, которые облегчают автоматизацию веб-процессов.
Одним из ключевых преимуществ selenium является его гибкость и многофункциональность. Вы можете использовать эту библиотеку для создания скриптов, которые могут автоматизировать различные задачи в веб-браузере, такие как тестирование веб-приложений, сбор данных с веб-сайтов или даже управление аккаунтом в социальных сетях.
Для начала работы с selenium, вам нужно установить библиотеку командой pip install selenium. После установки, вы можете создавать скрипты, которые будут взаимодействовать с веб-сайтами, имитируя действия пользователя. selenium предоставляет множество методов для работы с веб-элементами, что делает его одним из лучших инструментов для автоматизации веб-процессов.
С помощью selenium, вы можете автоматизировать рутинные задачи в веб-браузере, что сэкономит вам время и уменьшит вероятность ошибок. Это также открывает возможности для тестирования и сбора данных, что может быть весьма полезно в различных сферах, начиная от веб-разработки и заканчивая маркетингом.
Подсчет количества слов в текстовом файле
На этом примере в Python мы прочитаем текстовый файл и посчитаем количество слов в нем.
Российский ИИ-стек стал опенсорсом — весь сразу
Сбер выложил под MIT сразу несколько ИИ-моделей, которые можно крутить в собственном контуре: две MoE-LLM GigaChat Ultra-Preview и Lightning, ASR-модель GigaAM-v3, визуальный стек Kandinsky 5.0 (Video Pro / Video Lite / Image Lite) и K-VAE 1.0 для сжатия визуальных данных.
По сути, это готовый open-source набор для русскоязычных ML-пайплайнов:
• Ultra / Lightning — для LLM-задач, RAG, агентов и кода (Lightning при этом не проседает по качеству относительно опенсорса в своём классе и даёт очень быстрый инференс, что важно для продакшена).
• GigaAM-v3 — для распознавания русской речи с пунктуацией и нормализацией.
• Kandinsky 5.0 + K-VAE 1.0 — для генерации и обучения видео/изображений, в том числе с русскими промптами и кириллицей.
Модели можно разворачивать локально, заворачивать в свои REST/gRPC-сервисы и подключать к Python-стеку — от классических FastAPI-бэкендов до внутренних тулов для RAG и мультимодальных приложений.
#python #машинноеобучение
🌐 Копирование веб-содержимого в Python с библиотекой pywebcopy
Библиотека pywebcopy облегчает автоматизацию процесса загрузки веб-содержимого, что может быть полезным при создании веб-скраперов, загрузчиков или других приложений, требующих копирования данных из Интернета.
Пример кода:
from pywebcopy import save_webpage
url = 'https://www.example.com'
target_folder = 'path/to/folder'
save_webpage(url, target_folder)
save_webpage для копирования веб-содержимого указанной веб-страницы (url) в указанную целевую папку (target_folder).pywebcopy предоставляет простой и удобный способ копирования веб-содержимого прямо из Python. Она может быть полезна при создании скриптов для загрузки данных с веб-страниц, автоматизации сбора информации или создании зеркал сайтов. 💻
Слайсы
Слайс (или срез, англ. slice) — это способ выбрать часть последовательности (например, строки, списка, кортежа) путем указания начального и конечного индексов, а также шага. Слайсы используются для извлечения подстрок, подсписков или подкортежей из исходной последовательности.
Слайсы полезны для работы с большими последовательностями данных и предоставляют удобный способ извлечения нужных элементов из них.
#python #slice
Создаем контекстный менеджер с помощью декоратора
Обычно протокол управления контекстом реализовывают с помощью класса и двух магических методов: __enter__ и __exit__. Но такой подход может показаться слегка сложным.
Так вот, помимо написания своего класса, есть еще один способ создать контекстный менеджер — использовать декоратор @contextmanager из встроенного пакета contextlib.
Первая часть функции tag, которая идёт до yield, выполняется при входе в блок with. Затем исполняется сам этот блок, а после этого завершается оставшаяся часть, которая идет после yield.
#contextlib
Отладка утечек памяти в Python приложении
Для отладки утечек памяти в Python можно использовать инструменты, такие как Memory Profiler и objgraph. Эти инструменты помогут вам выявить, какие объекты удерживают ссылки и могут вызывать утечки памяти.Memory Profiler позволяет получить детальный отчет о потреблении памяти в каждой строке кода вашего скрипта. Чтобы воспользоваться этим инструментом, запустите вашу программу с помощью следующей команды:
python -m memory_profiler my_script.py
objgraph помогает визуализировать ссылки между объектами, что позволяет легко понять, какие объекты удерживают ссылки на другие объекты. Например, следующий код создаст изображение my_list.png, на котором будут показаны все объекты, на которые ссылается my_list, и все объекты, которые ссылаются на них.
База данных на минималках
Встроенный модуль shelve позволяет сохранять и читать произвольные данные. Таким образом, можно сохранять любые Python объекты для дальнейшего использования.
Доступ к данным осуществляется с помощью ключей, как и в случае со словарями. А метод shelve.open поддерживает протокол контекстного менеджера, то есть можно не вызывать метод close.
В документации заявляют, что такая база данных является "надежной". Но учитывая, что shelve написан на pickle, его стоит использовать только в совсем маленьких проектах.
#shelve
Научись проектировать ИИ-агентов, управлять роботами и развертывать RAG-системы 21 ноября на True Tech Champ
На бесплатном фестивале технологий от МТС тебя ждет конференция с российскими и иностранными экспертами и новый формат лектория — ИТ-качалка.
Уже известны первые спикеры и темы:
• «Физический агент: на пути к когнитивным роботам общего назначения с моделями мира», Артем Лыков — ведущий R&D-разработчик MWS, аспирант ISR Lab и Skoltech.
• «RAG как помощник на каждый день», Валентин Малых — руководитель фундаментальных исследований MWS AI
• An introduction tutorial to AI Agent Workflows, Майкл Ланэм — канадский разработчик с 20-летним и автор книги AI Agents in Action.
Между докладами и воркшопами можно смотреть гонки и битвы роботов, устроить поединки робопауков, пройти лазерный лабиринт, собрать сервер на скорость, сделать аксессуары из плат и протестировать другие айтивности.
Выбирай формат — смотри прямой эфир или приходи в МТС Live Холл.
Регистрируйся, чтобы провести 21 ноября с пользой и драйвом.
TurboGears
TurboGears — это фреймворк для создания веб-приложений на Python. Он состоит из набора взаимозаменяемых компонентов, упрощающих и ускоряющих разработку.
Вот некоторые ключевые особенности TurboGears:
— TurboGears использует архитектурный шаблон Model-View-Controller (MVC), разделяя ваше приложение на логические блоки: модель, представление и контроллер. Это способствует более организованной и поддерживаемой разработке.
— TurboGears позволяет вам выбирать нужные библиотеки и инструменты. По умолчанию он использует Pylons, SQLAlchemy, Genshi и Repoze, но вы можете заменить их на другие.
#python
Привычка на ВСЮ ЖИЗНЬ: научиться с пользой убивать время в дороге, на скучной паре или унылой работе.
📚Лучшее средство — слушать книги. Они нереально расширяют кругозор, прокачивают красноречие и словарный запас. И их удобно слушать на фоне.
В телеге есть бот, который БЕСПЛАТНО ищет тысячи аудиокниг. А если любите читать, а не слушать — обычные книги тоже есть.
🎧 Пока не забанили, сохраняйте ссылку: @flibustatopbot
Управление версионностью Python с помощью pyenv
Инструмент pyenv предоставляет простой способ для переключения между различными версиями Python, придерживаясь принципов UNIX, согласно которым каждый инструмент должен эффективно выполнять свою задачу.
Возможности pyenv включают:
- Изменение глобальной версии Python для пользователя;
- Управление версиями Python для индивидуальных проектов;
- Переопределение версии Python через переменную среды;
- Поиск и выполнение команд сразу из нескольких версий Python.
#pyenv
Не ждали, а она тут — новая версия Python 3.14
И лучше просто кликнуть сейчас по ссылке и послушать краткий обзор от Евгения Афонасьева, тимлида разработки Antifraud в Авито, чем потом упускать полезные фичи и искать этот пост.
В ролике разобрали как небольшие обновления, так и те, что лучше внедрять в свою работу уже сейчас.
Смотрим и обсуждаем по ссылке!
Библиотека для генерации рандомных данныхMimesis — это модуль, предназначенный для генерации случайных данных. Это особенно полезно при тестировании алгоритмов, когда требуется большой объем данных. Использование Mimesis избавляет от необходимости создавать эти данные вручную, существенно экономя время.
Этот код сгенерирует случайные адресные данные, такие как название города, улицы, номер дома и координаты.
#python #mimesis
Делаем простой интерфейс используя tkintertkinter - это стандартная библиотека для создания графического пользовательского интерфейса (GUI) в Python. Она предоставляет простой и удобный способ создания оконных приложений с использованием виджетов, таких как кнопки, текстовые поля, списки и многое другое.
Хотя tkinter может показаться менее мощным по сравнению с некоторыми другими библиотеками GUI для Python, такими как PyQt или wxPython, она остается популярным выбором для начинающих разработчиков и для создания простых и удобных в использовании GUI-приложений.
#python #tkinter
Работаем с USBPyUSB — это библиотека, которая обеспечивает легкий доступ к USB. Имеет поддержку изохронной передачи, если её поддерживает бэкенд.
Основные методы для работы с USB, такие как find(), show_devices() и т. д, хранятся в usb.core.
Пакет usb.util содержит вспомогательные функции.
Функция find() используется для поиска устройств, подключенных к системе.
Также есть реализация внешнего и внутреннего интерфейса, для изоляции API от деталей реализации системы. Связующим звеном между двумя слоями является интерфейс IBackend. PyUSB поставляется со встроенными бэкэндами для libusb 1.0, libusb 0.1 и OpenUSB.
#python #PyUSB
Управление Docker контейнерами с помощью docker-pydocker-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, выводим логи работы контейнера и в конце останавливаем и удаляем контейнер.# Получение списка всех образов
images = client.images.list()
# Вывод информации о каждом образе
for image in images:
print(f'ID: {image.id}, Теги: {image.tags}')
Работаем с файловыми путями
В стандартной библиотеке есть максимально удобный пакет pathlib для простой работы с файловыми путями.
Для представления пути к файлу есть класс Path, с объектами которого уже можно производить операции. Например, методы exists() и is_dir() проверяют, существует ли файл и является ли он директорией.
Но самой классной фичей является замена os.path.join() на более удобный и элегантный вариант с использованием слэшей, как показано на картинке.
Итого, пакет pathlib может стать частичной заменой os в некоторых случаях при работе с файловыми путями.
#pathlib
Редирект вывода программы
В contextlib есть еще один прикольный контекстный менеджер — redirect_stdout, позволяющий перенаправить стандартный вывод программы.
Контекстный менеджер принимает аргумент, в котором мы можем указать, куда должен переправляться весь вывод в последующем блоке.
Таким образом, данные из print() в контекстом менеджере будут переправлены в открытый ранее файл, так как мы его передали в аргумент redirect_stdout.
Убедится в этом можем, открыв файл заново и прочитав оттуда данные.
#contextlib
Работа с ip адресами
Если вам приходится писать на Python программы для работы с сетью — это значит, что вам может очень пригодиться модуль ipaddress.
Одним из вариантов его использования является генерация списка IP-адресов из диапазона адресов, заданных в формате CIDR (Classless Inter-Domain Routing, или бесклассовая адресация).
Кстати, у модуля ipaddress есть и много других интересных возможностей, прочитать о которых можно здесь.
#ipaddress
Распознаем речь используя SpeechRecognitionSpeechRecognition — это библиотека на Python, которая предоставляет возможность использовать API для распознавания речи от различных компаний, таких как Google, Microsoft, IBM и другие. Кроме того, она поддерживает работу в офлайн-режиме.
Эта библиотека упрощает процесс интеграции голосовых команд и обработки аудиоданных в ваших проектах. Благодаря широкому спектру возможностей, SpeechRecognition подходит для создания приложений с голосовым управлением, интеллектуальных ассистентов и многого другого.
#python #speechrecognition
Метод sets.issubset()
Метод sets.issubset() позволяет проверить находится ли каждый элемент множества sets в последовательности other. Метод возвращает True, если множество sets является подмножеством итерируемого объекта other, если нет, то вернет False.
Синтаксис:
sets.issubset(other).
Порядок разрешения методов
В Python существует так называемый Method Resolution Order (MRO), или порядок разрешения методов в классе. Всё, что вам нужно знать – это порядок, в котором Python ищет нужный атрибут или метод.
Этот порядок можно получить при помощи атрибута __mro__. Он говорит о том, что если мы в примере выше попробуем обратиться к атрибуту value, Python будет искать сначала в классе A, далее в B, затем в C и в самом конце в object.
Отсюда становится понятно, что артибут первее будет найден именно в классе B и равен он будет значению 1.
#классы
NetworkX
NetworkX — это библиотека Python для анализа сложных сетей. Она предоставляет структуры данных для работы с графами (сетями) и реализует множество алгоритмов для анализа и визуализации сетевых данных.
Она может использоваться в различных областях, таких как социальные, биологические, транспортные, компьютерные сети и многих других.
#python
PyQtGraph
PyQtGraph — это библиотека Python для создания интерактивных 2D и 3D графиков, а также элементов графического интерфейса (GUI). Она основана на PyQt (или PySide) и NumPy, что делает ее мощным и универсальным инструментом для научных, инженерных и исследовательских задач.
#python
Получение геолокации по IP с использованием ip2geotools
Недавно я обнаружил увлекательный пакет ip2geotools, который обеспечивает возможность получения геолокации по IP из различных баз данных.
Пример кода для получения информации по IP с использованием класса DbIpCity, представляющего некоммерческую базу данных, выглядит следующим образом:
from ip2geotools.databases.noncommercial import DbIpCity
def get_ip_geolocation(ip_address):
try:
response = DbIpCity.get(ip_address, api_key='free')
city = response.city
region = response.region
country = response.country
latitude = response.latitude
longitude = response.longitude
print(f"Информация о местоположении для IP {ip_address}:")
print(f"Город: {city}")
print(f"Регион: {region}")
print(f"Страна: {country}")
print(f"Широта: {latitude}")
print(f"Долгота: {longitude}")
except Exception as e:
print(f"Ошибка при получении информации по IP {ip_address}: {e}")
ip_address_to_check = '8.8.8.8'
get_ip_geolocation(ip_address_to_check)
get из класса DbIpCity для получения информации о местоположении по заданному IP-адресу. Помните о том, что для использования некоторых баз данных может потребоваться API-ключ.
Wget
Наверняка вам не раз приходилось писать методы для какой-то специфической работы с вебом. Но я вас огорчу – вы делали это зря. Ведь уже есть wget. Рекурсивно скачать сайт? Забрать со страницы все изображения? Для wget это не проблема.
Используйте dict.get() вместо dict[]
Есть несколько способов получения значений из словарей, и даже по такой теме разработчики часто спорят.
Многие получают значения по ключам через квадратные скобки, но если такого ключа нет, то будет вызвано исключение.
Поэтому мы считаем, что лучше использовать метод get у словарей. Его основной плюс заключается в том, что он принимает опциональный аргумент, отвечающий за значение по умолчанию.
Таким образом, если значение по ключу не найдено, то вернется дефолтное значение.
В итоге, мы убираем возможные ошибки в случае, если нужных ключей в словаре нет.
#python #dict
Удаление страниц PDF-файла
Библиотека PyMuPDF включает в себя довольно много сложных методов, которые упрощают удаление страниц из файла PDF. Он позволяет указать либо одну страницу (используя метод deletePage()), либо диапазон номеров страниц (используя метод deletePageRange()), либо список с номерами страниц (используя метод select()).
В следующем примере показано, как использовать список для выбора страниц, которые нужно сохранить в исходном документе. Имейте в виду, что страницы, которые не указаны, не будут частью выходного документа. В нашем случае выходной документ содержит только первую, вторую и четвертую страницы.
#python