Справочник Программиста
6.37K subscribers
1.29K photos
376 videos
64 files
1.62K links
По рекламе - @it_start_programmer
Мои курсы - @courses_from_it_start_bot
Сайт - https://it-start.online/
YouTube - https://www.youtube.com/@it_start
Реклама на бирже - https://telega.in/c/programmersGuide_1

Предложить идею: @it_start_suggestion_bot
Download Telegram
👀 Библиотека Hatch в Python

Библиотека Hatch предназначена для управления проектами и виртуальными окружениями, которая упрощает процессы создания, настройки и публикации Python-пакетов.

Позволяет эффективно управлять жизненным циклом своих проектов и поддерживать согласованную конфигурацию.

Основные возможности библиотеки:
🔵Управление виртуальными окружениями: Позволяет создавать и управлять виртуальными окружениями, упрощая процесс работы с проектами. Автоматизирует создание окружений, управление их версиями и переключение между ними, обеспечивая изоляцию зависимостей для разных проектов.
🔵Гибкая настройка проекта: Вся конфигурация проекта хранится в одном файле — pyproject.toml.
🔵Сборка и публикация пакетов: Автоматически собирает Python-пакеты в распространённые форматы, такие как wheel и sdist. Также упрощает процесс публикации пакетов на PyPI или других репозиториях, позволяя быстро и без ошибок выкладывать проект.
🔵Управление зависимостями: Предоставляет удобные механизмы для установки и управления зависимостями.
🔵Плагины и расширяемость: Поддерживает расширения через плагины, что позволяет добавлять кастомную функциональность и улучшать процесс работы с проектом.
🔵Скрипты и команды: Позволяет определять собственные команды для выполнения различных задач, таких как тестирование, анализ кода или сборка.

➡️Установка библиотеки: pip install hatch

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥3❤‍🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Код для защиты Excel-файла паролем на Python

Для защиты Excel-файла паролем в коде используется библиотека Spire.Office.

➡️Установка библиотеки: pip install Spire.Office

from spire.xls import Workbook


def protect_excel_with_password(input_file, output_file, password):
try:
# Открываем существующий Excel-файл
workbook = Workbook()
workbook.LoadFromFile(input_file)

# Устанавливаем пароль для открытия файла
workbook.Protect(password)

# Сохраняем защищённый файл
workbook.SaveToFile(output_file)
print(f"Файл успешно защищён паролем и сохранён как {output_file}")
except Exception as e:
print(f"Ошибка: {e}")


if __name__ == "__main__":
# Пример использования
input_path = r"example.xlsx"
output_path = r"output_file.xlsx"
file_password = "password123"

protect_excel_with_password(input_path, output_path, file_password)


➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥4❤‍🔥3🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Flask-Bcrypt — это расширение для фреймворка Flask, которое добавляет поддержку хэширования паролей с использованием алгоритма BCrypt.

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

Основные особенности:
🔵Безопасное хэширование паролей с использованием алгоритма BCrypt.
🔵Защита от атак с использованием предвычисленных таблиц благодаря генерации соли.
🔵Устойчивость к атакам brute force за счёт регулируемого уровня сложности.
🔵Простая интеграция с фреймворком Flask.
🔵Удобные методы для хэширования и проверки паролей.
🔵Поддержка настройки сложности хэширования через количество итераций.

➡️Установка библиотеки: pip install Flask-Bcrypt

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
5❤‍🔥3🔥2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Код для наложения текста над видео с анимацией на Python

Для наложения текста над видео в коде используется библиотека movis.

➡️Установка библиотек: pip install movis

import movis as mv

# Создаём композицию с размером 1920x1080 пикселей и длительностью 8 секунд
scene = mv.layer.Composition(size=(1920, 1080), duration=8.0)

# Добавляем видеоклип 'video.mp4' в композицию
video = scene.add_layer(mv.layer.Video('video.mp4'))

# Добавляем текстовый слой с сообщением 'Welcome!' на позицию (960, 100) с белым цветом и размером шрифта 70
text_layer = scene.add_layer(mv.layer.Text('Welcome!',
font_size=70,
color='#FFFFFF'),
position=(960, 100))

# Анимация масштаба и прозрачности, чтобы текст плавно увеличивался и становился видимым
text_layer.scale.enable_motion().extend([0.0, 1.5], [0.0, 1.0]) # Масштаб от 0 до 1.5
text_layer.opacity.enable_motion().extend([0.0, 2.0], [0.0, 1.0]) # Прозрачность от 0 до 1

# Сохраняем итоговое видео в файл 'output.mp4'
scene.write_video('output.mp4')


➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤‍🔥3👍2
This media is not supported in your browser
VIEW IN TELEGRAM
👀 Библиотека StatsForecast в Python

Библиотека StatsForecast предназначена для высокопроизводительного прогнозирования временных рядов.

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

Основные возможности библиотеки:
🔵Самые быстрые и точные реализации AutoARIMA, AutoETS, AutoCES, MSTL и Theta на Python.
🔵Готовая интеграция с Spark, Dask и Ray.
🔵Прогнозирование с учетом вероятностей и доверительные интервалы.
🔵Поддержка экзогенных переменных и статических ковариат.
🔵Обнаружение аномалий.

➡️Установка библиотеки: pip install statsforecast

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥3👍3🔥1
👀 Библиотека python-magic в Python

Библиотека python-magic — это удобный интерфейс для работы с libmagic, популярной утилитой, которая определяет типы файлов на основе их содержимого, а не по расширению.

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

Основные возможности библиотеки:
🔵Определение типа файла на основе содержимого.
🔵Получение MIME-типа файла.
🔵Определение типа данных из буфера байтов.
🔵Указание пути к пользовательскому файлу базы данных magic.mgc.
🔵Работа с различными типами файлов: текст, изображения, видео, архивы и др.
🔵Кроссплатформенность: поддержка Linux, Windows и macOS.

➡️Установка библиотеки: pip install python-magic

📱 Репозиторий

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤‍🔥3
DocETL — это инструмент, предназначенный для извлечения, преобразования и загрузки данных из документов.

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

Основные особенности:
🔵Поддержка форматов PDF, DOCX и TXT.
🔵Извлечение текста из сложных документов с сохранением структуры.
🔵Очистка, нормализация и анализ данных.
🔵Сохранение преобразованных данных в базы данных или другие форматы.
🔵Специализированные функции для анализа медицинских терминов.
🔵Выявление и обработка чувствительных данных.
🔵Возможность подключения пользовательских функций для обработки данных.
🔵Интеграция с другими библиотеками и проектами.

➡️Установка библиотеки: pip install docetl

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤‍🔥21🔥1
👀 Библиотека wheel в Python

Библиотека wheel используется для работы с форматом wheel — стандартом для упрощённой упаковки и установки Python-пакетов.

Wheel-пакеты (*.whl) представляют собой предварительно скомпилированные дистрибутивы Python-пакетов, которые можно быстро и эффективно устанавливать через pip.

Основные возможности библиотеки:
🔵Создание wheel-пакетов из исходного кода.
🔵Распаковка содержимого wheel-пакетов.
🔵Проверка валидности wheel-пакетов.
🔵Упрощение установки пакетов благодаря предсобранным бинарникам.
🔵Совместимость с инструментами сборки, такими как setuptools.
🔵Поддержка работы с платформозависимыми и универсальными пакетами.
🔵Ускорение установки пакетов через pip.
🔵Автоматизация процесса упаковки и развёртывания Python-проектов.

➡️Установка библиотеки: pip install wheel

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥3👍32
👀 Библиотека python-slugify в Python

Библиотека python-slugify позволяет конвертировать строки в удобный для использования формат "slug".

Slug — это короткий, человекочитаемый идентификатор, часто используемый в URL для замены пробелов и специальных символов на безопасные и удобные для чтения символы (обычно дефисы).

Основные возможности библиотеки:
🔵Замена пробелов и спецсимволов: Преобразует пробелы, символы пунктуации и спецсимволы в дефисы.
🔵Поддержка Unicode: Поддерживает символы различных языков, включая кириллицу.
🔵Транслитерация: Может автоматически преобразовывать текст из одного алфавита в другой (например, кириллицу в латиницу).
🔵Настраиваемый разделитель: Позволяет задавать любой разделитель вместо стандартного дефиса.
🔵Поддержка кастомных функций обработки текста: Возможность использовать собственные функции для обработки строк.

➡️Установка библиотеки: pip install python-slugify

📱 Репозиторий

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤‍🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Код для сканирования на наличие дубликатов файлов по хэшу с логированием на Python

Для сканирования на наличие дубликатов файлов по хэшу с логированием в коде используются стандартные библиотеки os, hashlib, logging и typing.

import os
import hashlib
import logging
from typing import Dict

# Настройка логирования
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s",
handlers=[
logging.FileHandler("duplicates.log", encoding="utf-8"), # Лог записывается в файл
logging.StreamHandler() # Лог также выводится в консоль
]
)


def get_file_hash(file_path: str, chunk_size: int = 65536) -> str:
hasher = hashlib.md5() # Создаем объект хэша MD5
try:
# Открываем файл в бинарном режиме для чтения
with open(file_path, 'rb') as file:
# Читаем файл частями, чтобы не загружать весь файл в память
while chunk := file.read(chunk_size):
hasher.update(chunk) # Обновляем хэш с помощью очередного блока данных
return hasher.hexdigest() # Возвращаем итоговый хэш файла
except FileNotFoundError:
logging.error(f"Файл не найден: {file_path}") # Логируем ошибку, если файл отсутствует
raise
except PermissionError:
logging.error(f"Нет доступа к файлу: {file_path}") # Логируем ошибку, если нет прав доступа
raise


def find_duplicates(folder_path: str) -> None:
# Проверяем, существует ли указанная директория
if not os.path.exists(folder_path):
logging.error(f"Указанная директория не существует: {folder_path}")
return

# Словарь для хранения хэшей файлов и их путей
files_hash: Dict[str, str] = {}
# Проходимся по всем папкам, подкаталогам и файлам в директории
for root, dirs, files in os.walk(folder_path):
for file in files: # Обрабатываем каждый файл в текущей директории
file_path = os.path.join(root, file) # Формируем полный путь к файлу
try:
# Вычисляем хэш текущего файла
file_hash = get_file_hash(file_path)
if file_hash in files_hash:
# Если хэш уже есть в словаре, то найден дубликат
logging.info(f"Дубликат найден: {file_path} и {files_hash[file_hash]}")
else:
# Если хэша нет в словаре, добавляем файл в словарь
files_hash[file_hash] = file_path
except Exception as e:
# Логируем любые ошибки, возникшие при обработке файла
logging.warning(f"Не удалось обработать файл {file_path}: {e}")


if __name__ == "__main__":
# Пример: поиск дубликатов в указанной директории
target_folder = r"C:\Users\User\Documents"
find_duplicates(target_folder)


➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥4❤‍🔥2
👀 Библиотека Urwid в Python

Библиотека Urwid предназначена для создания консольных пользовательских интерфейсов (CUI).

Поддерживает расширенные функции, такие как управление вводом с клавиатуры, мыши, раскраска текста, а также динамическое изменение размеров виджетов.

Основные возможности библиотеки:
🔵Гибкая система виджетов: Предоставляет множество встроенных виджетов, таких как кнопки, поля ввода, текстовые метки, списки и диалоги, которые можно комбинировать для создания интерфейсов.
🔵Поддержка Unicode: Поддерживает отображение текста в Unicode, что позволяет работать с различными языками и символами.
🔵Динамическое изменение размеров: Адаптируется к изменениям размеров терминала, что полезно для пользователей с различными разрешениями экрана.
🔵Цветовые схемы: Поддерживаются настраиваемые цветовые палитры для оформления интерфейсов.
🔵Обработка событий: Предоставляет удобные инструменты для работы с событиями, включая ввод с клавиатуры, мыши и таймеры.
🔵Асинхронность: Легко интегрируется с асинхронными фреймворками, такими как asyncio, что делает библиотеку подходящей для сетевых приложений и задач реального времени.

➡️Установка библиотеки: pip install urwid

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2👍2🔥2🤨1
This media is not supported in your browser
VIEW IN TELEGRAM
🖼Код для получения случайных изображений на Python

Для получения случайных изображений мы воспользуемся Lorem Picsum API.

Для обращения к API в коде используется библиотека requests, а для работы с изображением - Pillow и io.

➡️Установка библиотек: pip install requests Pillow

import requests
from PIL import Image
from io import BytesIO


def get_random_image(width: int, height: int):
"""
Получает случайное изображение с Lorem Picsum API.

:param width: Ширина изображения.
:param height: Высота изображения.
:return: Объект PIL.Image или None в случае ошибки.
"""
url = f"https://picsum.photos/{width}/{height}"
try:
response = requests.get(url)
response.raise_for_status() # Проверка на ошибки HTTP
image = Image.open(BytesIO(response.content))
return image
except requests.RequestException as e:
print(f"Ошибка при запросе изображения: {e}")
return None


def save_image(image: Image.Image, filename: str):
"""
Сохраняет изображение в файл.

:param image: Объект PIL.Image.
:param filename: Имя файла для сохранения.
"""
try:
image.save(filename)
print(f"Изображение сохранено как {filename}")
except Exception as e:
print(f"Ошибка при сохранении изображения: {e}")


if __name__ == "__main__":
# Указываем размеры изображения
width = 800
height = 600

# Получаем случайное изображение
random_image = get_random_image(width, height)
if random_image:
# Сохраняем изображение в файл
save_image(random_image, "random_image.jpg")


➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤‍🔥2👍1
👀 Библиотека pyinstrument в Python

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

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

Основные особенности библиотеки:
🔵Простота использования: Для использования библиотеки достаточно просто импортировать её и запустить профилирование.
🔵Текстовый и HTML-отчёт: Результаты профилирования можно вывести в виде текстового отчёта в консоли или в более наглядном HTML-формате.
🔵Точное измерение времени: Использует стеки вызовов для точного измерения времени, затрачиваемого на выполнение каждой функции, включая время, проведённое в подфункциях.
🔵Поддержка многозадачности: Поддерживает профилирование многозадачных приложений, например, когда используется асинхронное программирование с asyncio.

➡️Установка библиотеки: pip install pyinstrument

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥3❤‍🔥2
Tkinter Designer — это инструмент для упрощения создания пользовательских интерфейсов (GUI) в Python.

Автоматизирует процесс разработки интерфейса: вместо ручного написания кода для каждого элемента интерфейса, разработчики могут использовать визуальный редактор Figma, а затем сгенерировать Python-код на основе созданного макета.

Основные особенности:
🔵Интеграция с Figma для создания макетов интерфейсов.
🔵Автоматическая генерация Python-кода на основе макетов.
🔵Простота использования, подходящая для новичков.
🔵Поддержка графических ресурсов из Figma (иконки, изображения, цвета).
🔵Экономия времени на разработке пользовательских интерфейсов.

➡️Установка библиотеки: pip install tkdesigner

📱 Репозиторий
⚙️ Инструкция

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥6🔥2