My Python
2 subscribers
136 photos
3 videos
1 file
144 links
Download Telegram
Forwarded from Python 🇺🇦
bool

Метод bool() реалізує вбудовану функцію bool(). Коли ти викликаєш bool(x), Python намагається викликати x.bool(). Якщо значення, що повертається, не є логічним, Python видає помилку TypeError.

👀 Відео, котре допоможе розібратися з bool.

#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Завантажуємо вебсайти повністю

Максимально простий, але потужний пакет pywebcopy допоможе вам клонувати окремі веб-сторінки або навіть цілі сайти.

Функція save_webpage завантажує сторінку за вказаним посиланням, в аргументи також можна передати шлях, куди зберегти результат.

А ось save_website дає можливість завантажити весь сайт рекурсивно. Наприклад, якщо сайт є блогом, то скрипт скаче всі статті, які є на сайті.

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

#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Спрощена робота з JSON

Є один цікавий пакет JMESpath, який дозволяє декларативно вказати, як витягувати елементи з документа JSON.

Основні приклади використання показані на зображенні. Метод search приймає патерн, яким потрібно витягти дані, і навіть словник (схожий на JSON).

Взагалі можливостей у пакета достатньо, тому він гідний вивчення та застосування у проектах. Докладніше можна почитати в документації.

#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Отримуємо дані про систему

Кросплатформова бібліотека psutil дозволяє отримувати інформацію про процесор, пам'ять, диск, мережу, датчики і запущені процеси в системі. Приклади базового використання показані на зображенні.

Якщо говорити про практичне застосування, psutil корисний в основному для моніторингу системи, обмеження ресурсів процесів та управління запущеними процесами.

Крім звичних Windows, MacOS та Linux, бібліотека також підтримує системи FreeBSD, OpenBSD, NetBSD, Sun Solaris та AIX.

#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
infinity

Взагалі float є дуже цікавим типом даних і не перестає дивувати своїми особливостями. Про значення Not a Number ми вже писали раніше, а сьогодні поговоримо про infinity.

Рядкові літерали 'inf' та 'infinity' можна конвертувати в float, і в результаті виходить значення нескінченності. Для негативної "нескінченності" необхідно поставити знак мінуса перед словом.

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

#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Надсилаємо універсальні повідомлення

Вашій увазі цікавий пакет notifiers, який дозволяє відправляти повідомлення на пошту через Telegram бота, в Слек і ще багато куди. Всього доступно 16 провайдерів, детальніше про них у документації.

У функцію get_notifier передаємо назву провайдера у вигляді рядка та отримуємо об'єкт, з яким можна працювати. Надіслати повідомлення можна за допомогою універсального методу notify.

Якщо не впевнені, які аргументи потрібно передати для надсилання повідомлення, то можете подивитися їх через атрибут required у створеного об'єкта.

Наприклад, для Telegram потрібно передати токен бота, айді чату і саме повідомлення. У випадку з поштою необхідно вказати логін, пароль, адресата та повідомлення.

#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Використання zip

Функція zip() приймає елементи, об'єднує їх в кортеж і повертає його. Якщо передані ітератори мають різну довжину, ітератор із найменшою кількістю елементів визначає довжину нового ітератора.

👀 Відео, де автор докладно описує роботу цієї функції на конкретних прикладах.

#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Відловлюємо помилки за допомогою assert

Інструкція assert приймає логічний вираз та необов'язкове повідомлення. Вона використовується для перевірки типів, значень аргументу та виведення функції, а також для налагодження, оскільки зупиняє програму у разі помилки.

Якщо виконати інструкцію assert з логічним виразом, результат якого дорівнює True, нічого не станеться. Але у випадку з False буде згенеровано виняток AssertionError.

Однак не потрібно намагатися обробити виняток AssertionError блоком try-except. У такому разі assert втрачає свій сенс.

У прикладі ми перевірили, чи є переданий аргумент числовим типом даних. Якщо ні, то буде викликано виняток та виведено вказане повідомлення.

#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Розділюємо цілі числа

Важко візуально розрізнити цілі числа подібні 10000000 та 100000000. Використовувати коми, як в англійській мові, не вийде.

Але Python дозволяє використовувати нижнє підкреслення як роздільник для покращення читабельності.

Наприклад, 1_000_000 інтерпретуватиметься як ціле число 1000000.

#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Дізнаємося кодування тексту

Думаю, у всіх були ситуації, коли ви відкрили файл або отримали відповідь від сервера, а всередині виявлявся набір дивних символів у незрозумілому кодуванні.

Пакет chardet був створений для роботи з кодуванням. Його метод detect видає передбачуване кодування з точністю від 0 до 1.

У прикладі на картинці ми отримали відповідь на запит до сервера, взяли його вміст і перевірили кодування через цей метод.

#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
SciPy: Випукла оболонка

Випукла оболонка містить у собі набір точок та діє як межа кластера, яка допомагає визначити всі точки всередині кластера. За допомогою методу ConvexHull() ти можеш створити випуклу оболонку.

#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Тимчасові файли

У стандартній бібліотеці Python є модуль tempfile, який містить класи та методи для коректної роботи з тимчасовими файлами та директоріями.

Функція TemporaryFile створює тимчасовий файл у системній директорії та повертає файлоподібний об'єкт.

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

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

#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Підключаємося до сервера по ssh

Пакет paramiko дозволяє встановлювати з'єднання з віддаленими машинами за протоколом SSH2 і робити там ті самі операції, якби ви підключалися через, наприклад, утиліту ssh на лінуксі.

Використовувати модуль досить просто, приклад основних методів на зображенні вище. До речі, цікавий факт, Paramiko - це поєднання слів "параноїк" та "друг" мовою есперанто.

Встановлюється пакет звичним чином через пакетний менеджер pip. Документацію можна переглянути тут.

#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Завантажуємо відео з YouTube

Пакет pytube надає всю необхідну функціональність для завантаження відео з YouTube, а також для збирання всієї інформації про нього.

Для роботи нам необхідно створити об'єкт класу YouTube. Крім посилання на відео в конструктор можна передати у якості параметрів функції для обробки прогресу завантаження та завершення.

Більшість відео на ютубі не мають аудіодоріжки на потоках з високою роздільною здатністю, понад 720p — це пов'язано з технологією передачі DASH, яку використовує сервіс. Про вирішення цього нюансу поговоримо трішки пізніше.

На картинці показано, як відфільтрувати потоки з прогресивною передачею і вибрати з отриманого списку з максимальною доступною роздільною здатністю до 720p.

Для завантаження вибраного потоку використовуємо функцію download(), в функцію можна передати у якості параметрів шлях до директорії для збереження та ім'я файлу.

#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Об'єднуємо відео та аудіо потоки

Через технологію потокової передачі DASH (Dynamic Adaptive Streaming over HTTP), яка використовується youtube, ми не можемо отримати відразу відео в потрібній якості зі звуковою доріжкою через її відсутність у потоці.

Як рішення ми можемо окремо забрати аудіо та відео та об'єднати за допомогою утиліти ffmpeg. Для цього обираємо потрібні потоки video та audio, після чого передаємо url'и в команду для ініціювання створення процесу для скачування та об'єднання потоків за допомогою ffmpeg.

#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Працюємо з буфером обміну

Тут все просто: є пакет pyperclip, який дозволяє відправляти текст у буфер обміну вашого комп'ютера та отримувати його звідти.

У цьому пакеті є дві основні функції — copy() та paste(), за назвою яких зрозуміло їхнє призначення.

Таким чином, можна прямо через код копіювати виведення програми у буфер обміну замість того, щоб робити це вручну.

#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Очищаємо рядки

Найчастіше обробка вхідних даних зводиться до перетворення символів у верхній чи нижній регістр. Іноді дані можна очистити за допомогою регулярного виразу.

Але у випадках, коли завдання ускладнюється, можна застосувати більш зручний спосіб її вирішення. За допомогою словника зі значеннями для заміни символів та методу translate виходить вкрай лаконічний код.

У прикладі бачимо, як символи перенесення рядка \n і табуляції \t замінюються на звичайні пробіли, а символ \r видаляється з рядка повністю.

#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Надсилаємо запити з HTTPX

Цікавий пакет для роботи із веб-запитами. Як кажуть самі розробники, це HTTP-клієнт наступного покоління.

Порівнюючи зі звичним requests, httpx має такі переваги:

— Стандартний синхронний інтерфейс, але також є підтримка асинхронності
— Підтримка HTTP/1.1 та HTTP/2
— Можливість надсилати запити безпосередньо до WSGI та ASGI додатків
- Повна підтримка анотацій типів
- 100% покриття тестами

Раджу подивитися їх доки. Ще в них є туторіал для просунутого використання.

#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Генеруємо QR-код

Простий, але зручний та корисний пакет для створення QR-кодів. Для малювання картинок використовується Pillow, тому переконайтеся, що він у вас встановлений.

Щоб створити об'єкт картинки з QR-кодом, необхідно викликати метод make() і передати дані як аргумент. Для збереження потрібно застосувати метод save() до отриманого об'єкту.

Ще пакет дозволяє створювати QR-коди на основі картинок та у 6 різних стилях. Про це все, а також про просунуті приклади використання можна почитати безпосередньо в документації.

#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
RegEx: sub

Функція sub() замінює співпадіння текстом на твій вибір. У першому прикладі прогалини замінюються на 9. За потреби ти можеш контролювати кількість замін, вказавши параметр count. У другому прикладі прогалини замінюються лише двічі.

#practice // Python 🇺🇦