python_academy | Unsorted

Telegram-канал python_academy - Python Academy

45969

Python Academy — один канал вместо тысячи учебников Чат канала: @python_academy_chat Сотрудничество: @zubar89 Канал включён в перечень РКН: https://rkn.link/TVu

Subscribe to a channel

Python Academy

Работа с YAML-Файлами в Python с Помощью Библиотеки PyYAML

PyYAML позволяет эффективно работать с файлами в формате 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 обеспечивает легкость в использовании и читаемый код🐍

#python #yaml #pyyaml

Читать полностью…

Python Academy

Selenium: Автоматизация веб-браузера в Python

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

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

Для начала работы с selenium, вам нужно установить библиотеку командой pip install selenium. После установки, вы можете создавать скрипты, которые будут взаимодействовать с веб-сайтами, имитируя действия пользователя. selenium предоставляет множество методов для работы с веб-элементами, что делает его одним из лучших инструментов для автоматизации веб-процессов.

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

Читать полностью…

Python Academy

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

На этом примере в Python мы прочитаем текстовый файл и посчитаем количество слов в нем.

Читать полностью…

Python Academy

Российский ИИ-стек стал опенсорсом — весь сразу

Сбер выложил под 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 Academy

🌐 Копирование веб-содержимого в 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. Она может быть полезна при создании скриптов для загрузки данных с веб-страниц, автоматизации сбора информации или создании зеркал сайтов. 💻

#python #pywebcopy

Читать полностью…

Python Academy

Слайсы

Слайс (или срез, англ. slice) — это способ выбрать часть последовательности (например, строки, списка, кортежа) путем указания начального и конечного индексов, а также шага. Слайсы используются для извлечения подстрок, подсписков или подкортежей из исходной последовательности.

Слайсы полезны для работы с большими последовательностями данных и предоставляют удобный способ извлечения нужных элементов из них.

#python #slice

Читать полностью…

Python Academy

Создаем контекстный менеджер с помощью декоратора

Обычно протокол управления контекстом реализовывают с помощью класса и двух магических методов: __enter__ и __exit__. Но такой подход может показаться слегка сложным.

Так вот, помимо написания своего класса, есть еще один способ создать контекстный менеджер — использовать декоратор @contextmanager из встроенного пакета contextlib.

Первая часть функции tag, которая идёт до yield, выполняется при входе в блок with. Затем исполняется сам этот блок, а после этого завершается оставшаяся часть, которая идет после yield.

 #contextlib

Читать полностью…

Python Academy

Отладка утечек памяти в Python приложении

Для отладки утечек памяти в Python можно использовать инструменты, такие как Memory Profiler и objgraph. Эти инструменты помогут вам выявить, какие объекты удерживают ссылки и могут вызывать утечки памяти.

Memory Profiler позволяет получить детальный отчет о потреблении памяти в каждой строке кода вашего скрипта. Чтобы воспользоваться этим инструментом, запустите вашу программу с помощью следующей команды:

python -m memory_profiler my_script.py


objgraph помогает визуализировать ссылки между объектами, что позволяет легко понять, какие объекты удерживают ссылки на другие объекты. Например, следующий код создаст изображение my_list.png, на котором будут показаны все объекты, на которые ссылается my_list, и все объекты, которые ссылаются на них.

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

#python #memoryprofiler #objgraph

Читать полностью…

Python Academy

База данных на минималках

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

Доступ к данным осуществляется с помощью ключей, как и в случае со словарями. А метод shelve.open поддерживает протокол контекстного менеджера, то есть можно не вызывать метод close.

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

#shelve

Читать полностью…

Python Academy

Научись проектировать ИИ-агентов, управлять роботами и развертывать 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 ноября с пользой и драйвом.

Читать полностью…

Python Academy

TurboGears

TurboGears — это фреймворк для создания веб-приложений на Python. Он состоит из набора взаимозаменяемых компонентов, упрощающих и ускоряющих разработку.

Вот некоторые ключевые особенности TurboGears:


— TurboGears использует архитектурный шаблон Model-View-Controller (MVC), разделяя ваше приложение на логические блоки: модель, представление и контроллер. Это способствует более организованной и поддерживаемой разработке.
— TurboGears позволяет вам выбирать нужные библиотеки и инструменты. По умолчанию он использует Pylons, SQLAlchemy, Genshi и Repoze, но вы можете заменить их на другие.

#python

Читать полностью…

Python Academy

Привычка на ВСЮ ЖИЗНЬ: научиться с пользой убивать время в дороге, на скучной паре или унылой работе.

📚Лучшее средство — слушать книги. Они нереально расширяют кругозор, прокачивают красноречие и словарный запас. И их удобно слушать на фоне.

В телеге есть бот, который БЕСПЛАТНО ищет тысячи аудиокниг. А если любите читать, а не слушать — обычные книги тоже есть.

🎧 Пока не забанили, сохраняйте ссылку: @flibustatopbot

Читать полностью…

Python Academy

Управление версионностью Python с помощью pyenv

Инструмент pyenv предоставляет простой способ для переключения между различными версиями Python, придерживаясь принципов UNIX, согласно которым каждый инструмент должен эффективно выполнять свою задачу.

Возможности pyenv включают:

- Изменение глобальной версии Python для пользователя;
- Управление версиями Python для индивидуальных проектов;
- Переопределение версии Python через переменную среды;
- Поиск и выполнение команд сразу из нескольких версий Python.

#pyenv

Читать полностью…

Python Academy

Не ждали, а она тут — новая версия Python 3.14

И лучше просто кликнуть сейчас по ссылке и послушать краткий обзор от Евгения Афонасьева, тимлида разработки Antifraud в Авито, чем потом упускать полезные фичи и искать этот пост.

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

Смотрим и обсуждаем по ссылке!

Читать полностью…

Python Academy

Библиотека для генерации рандомных данных

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

Этот код сгенерирует случайные адресные данные, такие как название города, улицы, номер дома и координаты.

#python #mimesis

Читать полностью…

Python Academy

Делаем простой интерфейс используя tkinter

tkinter - это стандартная библиотека для создания графического пользовательского интерфейса (GUI) в Python. Она предоставляет простой и удобный способ создания оконных приложений с использованием виджетов, таких как кнопки, текстовые поля, списки и многое другое.

Хотя tkinter может показаться менее мощным по сравнению с некоторыми другими библиотеками GUI для Python, такими как PyQt или wxPython, она остается популярным выбором для начинающих разработчиков и для создания простых и удобных в использовании GUI-приложений.

#python #tkinter

Читать полностью…

Python Academy

Работаем с 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 Academy

Управление 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

Читать полностью…

Python Academy

Работаем с файловыми путями

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

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

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

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

#pathlib

Читать полностью…

Python Academy

Редирект вывода программы

В contextlib есть еще один прикольный контекстный менеджер — redirect_stdout, позволяющий перенаправить стандартный вывод программы.

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

Таким образом, данные из print() в контекстом менеджере будут переправлены в открытый ранее файл, так как мы его передали в аргумент redirect_stdout.

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

#contextlib

Читать полностью…

Python Academy

Работа с ip адресами

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

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

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

#ipaddress

Читать полностью…

Python Academy

Распознаем речь используя SpeechRecognition

SpeechRecognition — это библиотека на Python, которая предоставляет возможность использовать API для распознавания речи от различных компаний, таких как Google, Microsoft, IBM и другие. Кроме того, она поддерживает работу в офлайн-режиме.

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

#python #speechrecognition

Читать полностью…

Python Academy

Метод sets.issubset()

Метод sets.issubset() позволяет проверить находится ли каждый элемент множества sets в последовательности other. Метод возвращает True, если множество sets является подмножеством итерируемого объекта other, если нет, то вернет False.

Синтаксис:
sets.issubset(other).

Читать полностью…

Python Academy

Порядок разрешения методов

В Python существует так называемый Method Resolution Order (MRO), или порядок разрешения методов в классе. Всё, что вам нужно знать – это порядок, в котором Python ищет нужный атрибут или метод.

Этот порядок можно получить при помощи атрибута __mro__. Он говорит о том, что если мы в примере выше попробуем обратиться к атрибуту value, Python будет искать сначала в классе A, далее в B, затем в C и в самом конце в object

Отсюда становится понятно, что артибут первее будет найден именно в классе B и равен он будет значению 1.

#классы

Читать полностью…

Python Academy

NetworkX

NetworkX — это библиотека Python для анализа сложных сетей. Она предоставляет структуры данных для работы с графами (сетями) и реализует множество алгоритмов для анализа и визуализации сетевых данных.

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

#python

Читать полностью…

Python Academy

PyQtGraph

PyQtGraph — это библиотека Python для создания интерактивных 2D и 3D графиков, а также элементов графического интерфейса (GUI). Она основана на PyQt (или PySide) и NumPy, что делает ее мощным и универсальным инструментом для научных, инженерных и исследовательских задач.

#python

Читать полностью…

Python Academy

Получение геолокации по 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-ключ.

#python #ip2geotools

Читать полностью…

Python Academy

Wget

Наверняка вам не раз приходилось писать методы для какой-то специфической работы с вебом. Но я вас огорчу – вы делали это зря. Ведь уже есть wget. Рекурсивно скачать сайт? Забрать со страницы все изображения? Для wget это не проблема.

Читать полностью…

Python Academy

Используйте dict.get() вместо dict[]

Есть несколько способов получения значений из словарей, и даже по такой теме разработчики часто спорят.

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

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

Таким образом, если значение по ключу не найдено, то вернется дефолтное значение.

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

#python #dict

Читать полностью…

Python Academy

Удаление страниц PDF-файла

Библиотека PyMuPDF включает в себя довольно много сложных методов, которые упрощают удаление страниц из файла PDF. Он позволяет указать либо одну страницу (используя метод deletePage()), либо диапазон номеров страниц (используя метод deletePageRange()), либо список с номерами страниц (используя метод select()).

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

#python

Читать полностью…
Subscribe to a channel