Forwarded from Python 🇺🇦
Спрощена робота з JSON
Є один цікавий пакет
Основні приклади використання показані на зображенні. Метод
Взагалі можливостей у пакета достатньо, тому він гідний вивчення та застосування у проектах. Докладніше можна почитати в документації.
#practice // Python 🇺🇦
Є один цікавий пакет
JMESpath, який дозволяє декларативно вказати, як витягувати елементи з документа JSON.Основні приклади використання показані на зображенні. Метод
search приймає патерн, яким потрібно витягти дані, і навіть словник (схожий на JSON).Взагалі можливостей у пакета достатньо, тому він гідний вивчення та застосування у проектах. Докладніше можна почитати в документації.
#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Отримуємо дані про систему
Кросплатформова бібліотека
Якщо говорити про практичне застосування,
Крім звичних Windows, MacOS та Linux, бібліотека також підтримує системи FreeBSD, OpenBSD, NetBSD, Sun Solaris та AIX.
#practice // Python 🇺🇦
Кросплатформова бібліотека
psutil дозволяє отримувати інформацію про процесор, пам'ять, диск, мережу, датчики і запущені процеси в системі. Приклади базового використання показані на зображенні.Якщо говорити про практичне застосування,
psutil корисний в основному для моніторингу системи, обмеження ресурсів процесів та управління запущеними процесами.Крім звичних Windows, MacOS та Linux, бібліотека також підтримує системи FreeBSD, OpenBSD, NetBSD, Sun Solaris та AIX.
#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
infinity
Взагалі
Рядкові літерали '
Такий прийом може бути корисним у коді, де потрібно зберігати в змінній найбільше чи найменше числове значення для подальшого порівняння.
#practice // Python 🇺🇦
Взагалі
float є дуже цікавим типом даних і не перестає дивувати своїми особливостями. Про значення Not a Number ми вже писали раніше, а сьогодні поговоримо про infinity.Рядкові літерали '
inf' та 'infinity' можна конвертувати в float, і в результаті виходить значення нескінченності. Для негативної "нескінченності" необхідно поставити знак мінуса перед словом.Такий прийом може бути корисним у коді, де потрібно зберігати в змінній найбільше чи найменше числове значення для подальшого порівняння.
#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Надсилаємо універсальні повідомлення
Вашій увазі цікавий пакет
У функцію
Якщо не впевнені, які аргументи потрібно передати для надсилання повідомлення, то можете подивитися їх через атрибут
Наприклад, для Telegram потрібно передати токен бота, айді чату і саме повідомлення. У випадку з поштою необхідно вказати логін, пароль, адресата та повідомлення.
#practice // Python 🇺🇦
Вашій увазі цікавий пакет
notifiers, який дозволяє відправляти повідомлення на пошту через Telegram бота, в Слек і ще багато куди. Всього доступно 16 провайдерів, детальніше про них у документації.У функцію
get_notifier передаємо назву провайдера у вигляді рядка та отримуємо об'єкт, з яким можна працювати. Надіслати повідомлення можна за допомогою універсального методу notify.Якщо не впевнені, які аргументи потрібно передати для надсилання повідомлення, то можете подивитися їх через атрибут
required у створеного об'єкта.Наприклад, для Telegram потрібно передати токен бота, айді чату і саме повідомлення. У випадку з поштою необхідно вказати логін, пароль, адресата та повідомлення.
#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Використання zip
Функція
👀 Відео, де автор докладно описує роботу цієї функції на конкретних прикладах.
#practice // Python 🇺🇦
Функція
zip() приймає елементи, об'єднує їх в кортеж і повертає його. Якщо передані ітератори мають різну довжину, ітератор із найменшою кількістю елементів визначає довжину нового ітератора. 👀 Відео, де автор докладно описує роботу цієї функції на конкретних прикладах.
#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Відловлюємо помилки за допомогою assert
Інструкція
Якщо виконати інструкцію
Однак не потрібно намагатися обробити виняток
У прикладі ми перевірили, чи є переданий аргумент числовим типом даних. Якщо ні, то буде викликано виняток та виведено вказане повідомлення.
#practice // Python 🇺🇦
Інструкція
assert приймає логічний вираз та необов'язкове повідомлення. Вона використовується для перевірки типів, значень аргументу та виведення функції, а також для налагодження, оскільки зупиняє програму у разі помилки.Якщо виконати інструкцію
assert з логічним виразом, результат якого дорівнює True, нічого не станеться. Але у випадку з False буде згенеровано виняток AssertionError.Однак не потрібно намагатися обробити виняток
AssertionError блоком try-except. У такому разі assert втрачає свій сенс.У прикладі ми перевірили, чи є переданий аргумент числовим типом даних. Якщо ні, то буде викликано виняток та виведено вказане повідомлення.
#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Розділюємо цілі числа
Важко візуально розрізнити цілі числа подібні
Але Python дозволяє використовувати нижнє підкреслення як роздільник для покращення читабельності.
Наприклад,
#practice // Python 🇺🇦
Важко візуально розрізнити цілі числа подібні
10000000 та 100000000. Використовувати коми, як в англійській мові, не вийде.Але Python дозволяє використовувати нижнє підкреслення як роздільник для покращення читабельності.
Наприклад,
1_000_000 інтерпретуватиметься як ціле число 1000000.#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Дізнаємося кодування тексту
Думаю, у всіх були ситуації, коли ви відкрили файл або отримали відповідь від сервера, а всередині виявлявся набір дивних символів у незрозумілому кодуванні.
Пакет
У прикладі на картинці ми отримали відповідь на запит до сервера, взяли його вміст і перевірили кодування через цей метод.
#practice // Python 🇺🇦
Думаю, у всіх були ситуації, коли ви відкрили файл або отримали відповідь від сервера, а всередині виявлявся набір дивних символів у незрозумілому кодуванні.
Пакет
chardet був створений для роботи з кодуванням. Його метод detect видає передбачуване кодування з точністю від 0 до 1.У прикладі на картинці ми отримали відповідь на запит до сервера, взяли його вміст і перевірили кодування через цей метод.
#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Тимчасові файли
У стандартній бібліотеці Python є модуль
Функція
Створений тимчасовий файл буде видалено автоматично після закриття файлу або при виході з контекстного менеджера.
Також інші процеси та програми не зможуть отримати доступ до цього тимчасового файлу.
#practice // Python 🇺🇦
У стандартній бібліотеці Python є модуль
tempfile, який містить класи та методи для коректної роботи з тимчасовими файлами та директоріями.Функція
TemporaryFile створює тимчасовий файл у системній директорії та повертає файлоподібний об'єкт.Створений тимчасовий файл буде видалено автоматично після закриття файлу або при виході з контекстного менеджера.
Також інші процеси та програми не зможуть отримати доступ до цього тимчасового файлу.
#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Підключаємося до сервера по ssh
Пакет
Використовувати модуль досить просто, приклад основних методів на зображенні вище. До речі, цікавий факт, Paramiko - це поєднання слів "параноїк" та "друг" мовою есперанто.
Встановлюється пакет звичним чином через пакетний менеджер pip. Документацію можна переглянути тут.
#practice // Python 🇺🇦
Пакет
paramiko дозволяє встановлювати з'єднання з віддаленими машинами за протоколом SSH2 і робити там ті самі операції, якби ви підключалися через, наприклад, утиліту ssh на лінуксі.Використовувати модуль досить просто, приклад основних методів на зображенні вище. До речі, цікавий факт, Paramiko - це поєднання слів "параноїк" та "друг" мовою есперанто.
Встановлюється пакет звичним чином через пакетний менеджер pip. Документацію можна переглянути тут.
#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Завантажуємо відео з YouTube
Пакет
Для роботи нам необхідно створити об'єкт класу YouTube. Крім посилання на відео в конструктор можна передати у якості параметрів функції для обробки прогресу завантаження та завершення.
Більшість відео на ютубі не мають аудіодоріжки на потоках з високою роздільною здатністю, понад 720p — це пов'язано з технологією передачі DASH, яку використовує сервіс. Про вирішення цього нюансу поговоримо трішки пізніше.
На картинці показано, як відфільтрувати потоки з прогресивною передачею і вибрати з отриманого списку з максимальною доступною роздільною здатністю до 720p.
Для завантаження вибраного потоку використовуємо функцію
#practice // Python 🇺🇦
Пакет
pytube надає всю необхідну функціональність для завантаження відео з YouTube, а також для збирання всієї інформації про нього.Для роботи нам необхідно створити об'єкт класу YouTube. Крім посилання на відео в конструктор можна передати у якості параметрів функції для обробки прогресу завантаження та завершення.
Більшість відео на ютубі не мають аудіодоріжки на потоках з високою роздільною здатністю, понад 720p — це пов'язано з технологією передачі DASH, яку використовує сервіс. Про вирішення цього нюансу поговоримо трішки пізніше.
На картинці показано, як відфільтрувати потоки з прогресивною передачею і вибрати з отриманого списку з максимальною доступною роздільною здатністю до 720p.
Для завантаження вибраного потоку використовуємо функцію
download(), в функцію можна передати у якості параметрів шлях до директорії для збереження та ім'я файлу.#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Об'єднуємо відео та аудіо потоки
Через технологію потокової передачі DASH (Dynamic Adaptive Streaming over HTTP), яка використовується youtube, ми не можемо отримати відразу відео в потрібній якості зі звуковою доріжкою через її відсутність у потоці.
Як рішення ми можемо окремо забрати аудіо та відео та об'єднати за допомогою утиліти ffmpeg. Для цього обираємо потрібні потоки
#practice // Python 🇺🇦
Через технологію потокової передачі DASH (Dynamic Adaptive Streaming over HTTP), яка використовується youtube, ми не можемо отримати відразу відео в потрібній якості зі звуковою доріжкою через її відсутність у потоці.
Як рішення ми можемо окремо забрати аудіо та відео та об'єднати за допомогою утиліти ffmpeg. Для цього обираємо потрібні потоки
video та audio, після чого передаємо url'и в команду для ініціювання створення процесу для скачування та об'єднання потоків за допомогою ffmpeg.#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Працюємо з буфером обміну
Тут все просто: є пакет
У цьому пакеті є дві основні функції —
Таким чином, можна прямо через код копіювати виведення програми у буфер обміну замість того, щоб робити це вручну.
#practice // Python 🇺🇦
Тут все просто: є пакет
pyperclip, який дозволяє відправляти текст у буфер обміну вашого комп'ютера та отримувати його звідти.У цьому пакеті є дві основні функції —
copy() та paste(), за назвою яких зрозуміло їхнє призначення.Таким чином, можна прямо через код копіювати виведення програми у буфер обміну замість того, щоб робити це вручну.
#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Очищаємо рядки
Найчастіше обробка вхідних даних зводиться до перетворення символів у верхній чи нижній регістр. Іноді дані можна очистити за допомогою регулярного виразу.
Але у випадках, коли завдання ускладнюється, можна застосувати більш зручний спосіб її вирішення. За допомогою словника зі значеннями для заміни символів та методу
У прикладі бачимо, як символи перенесення рядка
#practice // Python 🇺🇦
Найчастіше обробка вхідних даних зводиться до перетворення символів у верхній чи нижній регістр. Іноді дані можна очистити за допомогою регулярного виразу.
Але у випадках, коли завдання ускладнюється, можна застосувати більш зручний спосіб її вирішення. За допомогою словника зі значеннями для заміни символів та методу
translate виходить вкрай лаконічний код.У прикладі бачимо, як символи перенесення рядка
\n і табуляції \t замінюються на звичайні пробіли, а символ \r видаляється з рядка повністю.#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Надсилаємо запити з HTTPX
Цікавий пакет для роботи із веб-запитами. Як кажуть самі розробники, це HTTP-клієнт наступного покоління.
Порівнюючи зі звичним
— Стандартний синхронний інтерфейс, але також є підтримка асинхронності
— Підтримка HTTP/1.1 та HTTP/2
— Можливість надсилати запити безпосередньо до WSGI та ASGI додатків
- Повна підтримка анотацій типів
- 100% покриття тестами
Раджу подивитися їх доки. Ще в них є туторіал для просунутого використання.
#practice // Python 🇺🇦
Цікавий пакет для роботи із веб-запитами. Як кажуть самі розробники, це HTTP-клієнт наступного покоління.
Порівнюючи зі звичним
requests, httpx має такі переваги:— Стандартний синхронний інтерфейс, але також є підтримка асинхронності
— Підтримка HTTP/1.1 та HTTP/2
— Можливість надсилати запити безпосередньо до WSGI та ASGI додатків
- Повна підтримка анотацій типів
- 100% покриття тестами
Раджу подивитися їх доки. Ще в них є туторіал для просунутого використання.
#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Генеруємо QR-код
Простий, але зручний та корисний пакет для створення QR-кодів. Для малювання картинок використовується
Щоб створити об'єкт картинки з QR-кодом, необхідно викликати метод
Ще пакет дозволяє створювати QR-коди на основі картинок та у 6 різних стилях. Про це все, а також про просунуті приклади використання можна почитати безпосередньо в документації.
#practice // Python 🇺🇦
Простий, але зручний та корисний пакет для створення QR-кодів. Для малювання картинок використовується
Pillow, тому переконайтеся, що він у вас встановлений.Щоб створити об'єкт картинки з QR-кодом, необхідно викликати метод
make() і передати дані як аргумент. Для збереження потрібно застосувати метод save() до отриманого об'єкту.Ще пакет дозволяє створювати QR-коди на основі картинок та у 6 різних стилях. Про це все, а також про просунуті приклади використання можна почитати безпосередньо в документації.
#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
Відловлюємо баги з assert
При виконанні інструкції
Але якщо спробувати виконати інструкцію assert з логічним виразом, який дорівнює
Винятки
Також не потрібно, наприклад, обробляти введення користувача і намагатися обробити виключення
Якщо у вашому коді буде дуже багато
#practice // Python 🇺🇦
При виконанні інструкції
assert з логічним виразом, результат якого дорівнює True, нічого не станеться.Але якщо спробувати виконати інструкцію assert з логічним виразом, який дорівнює
False, то буде згенеровано виняток AssertionError.Винятки
AssertionError призначені скоріше для налагодження. При написанні програм на етапі розробки ми можемо бачити, що робимо щось не так (наприклад, передали в метод некоректне значення).Також не потрібно, наприклад, обробляти введення користувача і намагатися обробити виключення
AssertionError блоком try-except.Якщо у вашому коді буде дуже багато
assert'ів, то це торкнеться і продуктивності програми.#practice // Python 🇺🇦
Forwarded from Python 🇺🇦
eq та hash
Python автоматично викликає метод
👀 Відео, котре допоможе розібратися із цими методами.
#practice // Python 🇺🇦
Python автоматично викликає метод
eq класу, коли ти використовуєш оператор == для порівняння екземплярів класу. Хеш об'єкта - це ціле число, що представляє значення об'єкта, і його можна отримати за допомогою функції hash(), якщо об'єкт можна хешувати. 👀 Відео, котре допоможе розібратися із цими методами.
#practice // Python 🇺🇦