В данной статье напишем код пяти полезных калькуляторов на Python.
Справочник Программиста - это Telegram канал, который призван помочь программистам развиваться и совершенствовать свои навыки. Здесь вы найдете полезные советы, инструкции, а также возможность заказать написание кода по вашим требованиям. Кроме того, на канале можно найти рекламные объявления и компании, предлагающие свои услуги в области программирования. Основным контактом для рекламы и заказа кода на канале является @it_start_programmer. Если вы хотите узнать больше о курсах, предлагаемых для программистов, обратитесь к @courses_from_it_start_bot. Для тех, кто хочет проверить свои знания в Python, доступны викторины по этому языку программирования на канале @python_quizzes_tasks. Дополнительную информацию можно найти на сайте канала: https://it-start.online/. Здесь вы найдете статьи, уроки и другую полезную информацию для программистов. Присоединяйтесь к каналу "Справочник Программиста" и развивайтесь вместе с нами в мире программирования!
30 Jan, 18:34
30 Jan, 10:48
fastjsonschema
— это высокопроизводительная библиотека для валидации JSON-схем в Python.pip install fastjsonschema
30 Jan, 06:18
pathlib
и shutil
.import shutil
from pathlib import Path
def sort_files_by_type(folder_path):
# Преобразуем путь к папке в объект Path
folder = Path(folder_path)
# Проверяем, существует ли папка и является ли она директорией
if not folder.exists() or not folder.is_dir():
print("Указанная папка не существует или это не папка.")
return
# Перебираем все файлы в указанной папке
for file in folder.iterdir():
# Проверяем, является ли объект файлом
if file.is_file():
# Получаем расширение файла (если оно есть), иначе 'Без расширения'
extension = file.suffix[1:] if file.suffix else 'Без расширения'
# Формируем путь для папки с соответствующим расширением
extension_folder = folder / extension
# Создаём папку для расширения, если она ещё не существует
extension_folder.mkdir(exist_ok=True)
# Перемещаем файл в соответствующую папку
shutil.move(str(file), extension_folder / file.name)
# Сообщаем, что файлы отсортированы
print("Файлы отсортированы по типам.")
# Пример: сортировка файлов в указанной папке
sort_files_by_type("C:/Users/User/Downloads")
29 Jan, 16:19
fsspec
предназначена для работы с файловыми системами через единый интерфейс.Pandas
, Dask
, Zarr
и другими.pip install fsspec
29 Jan, 13:17
Blessed
предоставляет удобные функции для создания цветного и форматированного текста, управления курсором, обработки ввода и других возможностей взаимодействия с консолью.pip install blessed
29 Jan, 11:48
moviepy
.pip install moviepy
from moviepy.editor import VideoFileClip
def convert_video_to_gif(video_path, gif_path):
video = VideoFileClip(video_path)
video.write_gif(gif_path, fps=60)
convert_video_to_gif("video.mp4",
"output.gif")
29 Jan, 10:47
28 Jan, 10:45
FastAPI-Admin
позволяет добавлять административную панель к приложениям, созданным с использованием фреймворка FastAPI
.SQLAlchemy
, Tortoise ORM
, и другими.pip install fastapi-admin
28 Jan, 06:21
requests
.pip install
requests
import requests
from pathlib import Path
def get_random_duck():
# URL для получения случайной картинки утки
url = "https://random-d.uk/api/v2/random"
try:
# Выполнение GET-запроса для получения данных
response = requests.get(url)
response.raise_for_status() # Проверка на успешный статус запроса
# Возвращаем URL картинки утки из полученного JSON
return response.json().get("url")
except requests.RequestException:
# В случае ошибки возвращаем None
return None
def save_duck_image(image_url, folder="ducks"):
# Определение пути для папки, где будут храниться картинки
folder_path = Path(folder)
folder_path.mkdir(parents=True, exist_ok=True) # Создание папки, если её нет
try:
# Запрос для получения картинки по URL
response = requests.get(image_url)
response.raise_for_status() # Проверка на успешный статус запроса
# Получение имени файла из URL картинки
image_name = Path(image_url).name
# Полный путь для сохранения файла
file_path = folder_path / image_name
# Открытие файла для записи в бинарном режиме и сохранение содержимого
with file_path.open('wb') as file:
file.write(response.content)
# Выводим сообщение о успешном сохранении
print(f"Картинка сохранена: {file_path}")
except requests.RequestException:
# В случае ошибки при скачивании выводим сообщение
print("Ошибка при скачивании картинки")
if __name__ == "__main__":
# Получение случайной картинки утки
duck_image_url = get_random_duck()
if duck_image_url:
# Если URL картинки получен, сохраняем изображение
save_duck_image(duck_image_url)
else:
# Если не удалось получить URL картинки, выводим ошибку
print("Не удалось получить изображение")
27 Jan, 16:23
PyCryptodome
предназначена для работы с криптографией в Python. Предоставляет инструменты для шифрования, дешифрования, генерации ключей и цифровой подписи.PyCrypto
, которая уже не обновляется.pip install pycryptodome
27 Jan, 10:46
pathlib
.from pathlib import Path
def find_large_files(folder_path, size_threshold_mb):
# Преобразуем порог размера в байты
size_threshold_bytes = size_threshold_mb * 1024 * 1024
# Создаём объект Path для указанной папки
folder = Path(folder_path)
# Рекурсивно проходим по всем файлам в папке и подкаталогах
for file_path in folder.rglob('*'):
# Проверяем, является ли найденный объект файлом
if file_path.is_file():
try:
# Получаем размер файла в байтах
file_size = file_path.stat().st_size
# Если размер файла превышает указанный порог, выводим его путь и размер в МБ
if file_size > size_threshold_bytes:
print(f"{file_path} - {file_size / (1024 ** 2):.2f} MB")
except FileNotFoundError:
# Если файл был удалён до обработки, игнорируем ошибку
pass
# Пример: найти файлы больше 1024 МБ в папке "C:/"
find_large_files("C:/", 1024)
27 Jan, 06:18
calendar-widget
предоставляет удобный виджет календаря для использования в графических интерфейсах, таких как Tkinter
.pip install calendar-widget
23 Jan, 13:15
Django-cachalot
предназначена для кэширования запросов к базе данных в Django
.Django
(PostgreSQL, MySQL, SQLite).Redis
, Memcached
и др.).pip install django-cachalot
23 Jan, 06:14
Tkinter Designer
— это инструмент для упрощения создания пользовательских интерфейсов (GUI) в Python.pip install tkdesigner
22 Jan, 16:17
pyinstrument
предназначена для профилирования кода на Python и позволяет отслеживать, сколько времени затрачивает выполнение различных частей программы.asyncio
.pip install pyinstrument
22 Jan, 10:45
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")
22 Jan, 06:17
Urwid
предназначена для создания консольных пользовательских интерфейсов (CUI).asyncio
, что делает библиотеку подходящей для сетевых приложений и задач реального времени.pip install urwid
21 Jan, 13:32
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)
21 Jan, 06:15
python-slugify
позволяет конвертировать строки в удобный для использования формат "slug".pip install python-slugify
20 Jan, 16:10
wheel
используется для работы с форматом wheel — стандартом для упрощённой упаковки и установки Python-пакетов.pip install wheel
20 Jan, 13:08
DocETL
— это инструмент, предназначенный для извлечения, преобразования и загрузки данных из документов.pip install docetl
19 Jan, 13:55
python-magic
— это удобный интерфейс для работы с libmagic
, популярной утилитой, которая определяет типы файлов на основе их содержимого, а не по расширению.pip install python-magic
19 Jan, 06:14
StatsForecast
предназначена для высокопроизводительного прогнозирования временных рядов.Spark
, Dask
и Ray
.pip install statsforecast
11 Jan, 16:23
bcrypt
используется для хэширования паролей с использованием алгоритма bcrypt, который является адаптивным и безопасным методом хранения паролей.pip install bcrypt
11 Jan, 12:57
Voice-Pro
— утилита с веб-интерфейсом на базе Gradio
, предназначенная для обработки аудио. Разработана на языке Python и предоставляет широкий спектр функций для работы с голосом и текстом.09 Jan, 13:24
FastUI
предназначена для быстрого создания пользовательских интерфейсов (UI) с использованием Python-кода.FastAPI
и Pydantic
, предоставляя разработчикам мощный и удобный инструмент для построения интерфейсов без необходимости глубокого изучения фронтенд-технологий.FastAPI
, предоставляя возможность интеграции UI с API в одном проекте.Pydantic
, что гарантирует согласованность и удобство работы с типизированными данными.pip install fastui
08 Jan, 14:21
moviepy
, а для работы с изображением текста - Pillow
и numpy
.pip install moviepy
Pillow numpy
from moviepy.editor import VideoFileClip, CompositeVideoClip, ImageClip
from PIL import Image, ImageDraw, ImageFont
import numpy as np
def add_watermark(input_video, output_video, watermark_text, font_size=24, position=("right", "bottom"), opacity=128):
# Загружаем видео
video = VideoFileClip(input_video)
# Создаём изображение с текстом водяного знака
font_path = "arial.ttf" # Указываем путь к файлу шрифта
font = ImageFont.truetype(font_path, font_size)
# Получаем размеры текста
text_bbox = font.getbbox(watermark_text)
text_width, text_height = text_bbox[2], text_bbox[3]
# Создаём прозрачное изображение для водяного знака
watermark_image = Image.new("RGBA", (text_width, text_height), (0, 0, 0, 0))
draw = ImageDraw.Draw(watermark_image)
draw.text((0, 0), watermark_text, font=font, fill=(255, 255, 255, opacity))
# Преобразуем Pillow-изображение в NumPy-массив
watermark_array = np.array(watermark_image)
# Конвертируем NumPy-массив в ImageClip
watermark_clip = ImageClip(watermark_array).set_duration(video.duration)
# Определяем позицию водяного знака
if position == ("right", "bottom"):
position = (video.size[0] - text_width - 10, video.size[1] - text_height - 10)
elif position == ("left", "top"):
position = (10, 10)
elif position == ("right", "top"):
position = (video.size[0] - text_width - 10, 10)
elif position == ("left", "bottom"):
position = (10, video.size[1] - text_height - 10)
watermark_clip = watermark_clip.set_position(position)
# Создаем итоговое видео
final_video = CompositeVideoClip([video, watermark_clip])
final_video.write_videofile(output_video, codec="libx264", audio_codec="aac")
# Пример использования
add_watermark(
input_video="input.mp4",
output_video="output_with_watermark.mp4",
watermark_text="My Watermark",
font_size=36,
position=("right", "bottom"),
opacity=200
)
07 Jan, 16:27
psudohash
— это инструмент для создания хэшей на основе "криптографически псевдослучайных данных".06 Jan, 06:22
In_place
предоставляет удобный способ для редактирования файлов "на месте" — т.е. без необходимости создавать временные файлы, а затем заменять оригинал.pip install in-place
05 Jan, 07:47
Pillow
.pip install
Pillow
from PIL import Image, ImageDraw, ImageFont
def create_image_with_text(text, output_path="output.png", text_size=36, position="center"):
# Создаём новое изображение размером 800x400, цвет фона - тёмно-синий
img = Image.new("RGB", (800, 400), color=(73, 109, 137))
# Инициализируем объект для рисования
draw = ImageDraw.Draw(img)
# Загружаем шрифт Arial с указанным размером текста
font = ImageFont.truetype("arial.ttf", size=text_size)
# Вычисляем размер текста с помощью textbbox (границы текста в формате (x_min, y_min, x_max, y_max))
text_bbox = draw.textbbox((0, 0), text, font=font)
text_width = text_bbox[2] - text_bbox[0] # Ширина текста
text_height = text_bbox[3] - text_bbox[1] # Высота текста
# Устанавливаем координаты текста в зависимости от выбранного положения
if position == "center": # Центр изображения
text_x = (img.width - text_width) // 2
text_y = (img.height - text_height) // 2
elif position == "top-left": # Верхний левый угол
text_x, text_y = 10, 10
elif position == "top-right": # Верхний правый угол
text_x = img.width - text_width - 10
text_y = 10
elif position == "bottom-left": # Нижний левый угол
text_x = 10
text_y = img.height - text_height - 10
elif position == "bottom-right": # Нижний правый угол
text_x = img.width - text_width - 10
text_y = img.height - text_height - 10
else:
# Если указано некорректное положение, выбрасываем исключение
raise ValueError(
"Недопустимое значение для position. Используйте: center, top-left, top-right, bottom-left, bottom-right."
)
# Добавляем текст на изображение по рассчитанным координатам
draw.text((text_x, text_y), text, fill="white", font=font)
# Сохраняем изображение в файл
img.save(output_path)
# Выводим сообщение о сохранении файла
print(f"Изображение сохранено как {output_path}")
# Запрашиваем у пользователя текст для изображения
text = input("Введите текст для изображения: ")
# Запрашиваем у пользователя размер текста
text_size = int(input("Введите размер текста: "))
# Предлагаем выбрать расположение текста
print(
"Выберите расположение текста: center, top-left, top-right, bottom-left, bottom-right"
)
# Получаем выбор пользователя
position = input("Введите расположение текста: ").strip()
# Вызываем функцию с указанными параметрами
create_image_with_text(text, text_size=text_size, position=position)
03 Jan, 11:18
pynput
используется для управления клавиатурой и мышью, а также для отслеживания их ввода.pip install pynput
03 Jan, 06:15
sudoku-in-python-packaging
— это проект, который демонстрирует, как структурировать Python-проект для решения задачи создания и упаковки консольного приложения на примере игры «Судоку».02 Jan, 16:12
Tenacity
предназначена для управления повторными попытками выполнения операций, которые могут завершиться неудачно.Tenacity
может автоматически выполнить её повторно.pip install tenacity
02 Jan, 12:11
Khoj
— это инструмент, который превращает локальный компьютер в персонального помощника на основе ИИ.pip install khoj
31 Dec, 10:08
31 Dec, 06:41
PyYAML
предназначена для работы с YAML (YAML Ain't Markup Language), удобным для человека форматом сериализации данных.pip install PyYAML
30 Dec, 16:02
colorama
.pip install colorama
import random
import time
from colorama import init, Fore
init(autoreset=True) # Инициализация colorama
def draw_tree(height=10):
try:
while True:
print("\033c", end="") # Очистка консоли
print("Новогодняя ёлка\n")
for i in range(1, height + 1):
level = " " * (height - i) + "*" * (2 * i - 1)
decorated_level = "".join(
random.choice([
Fore.GREEN + "*", # Зелёная звезда
Fore.RED + "o", # Красный шарик
Fore.YELLOW + "x" # Жёлтая гирлянда
]) if char == "*" else char for char in level)
print(decorated_level)
print(" " * (height - 1) + Fore.MAGENTA + "|||") # Ствол
time.sleep(0.5) # Пауза для анимации
except KeyboardInterrupt:
print("\nАнимация остановлена. С наступающим Новым годом!")
if __name__ == "__main__":
draw_tree()
30 Dec, 10:23
30 Dec, 00:47
29 Dec, 06:13
SlowAPI
позволяет ограничивать скорость запросов для веб-приложений, построенных на фреймворках Starlette
и FastAPI
.FastAPI
и Starlette
.pip install slowapi
28 Dec, 10:45
moviepy
.pip install moviepy
from moviepy.editor import VideoFileClip
from moviepy.video.fx import all as vfx
# Загрузка видео
clip = VideoFileClip("input_video.mp4")
# Применение черно-белого фильтра
clip = vfx.blackwhite(clip)
# Сохранение результата
clip.write_videofile("black_and_white_video.mp4")
28 Dec, 08:03
28 Dec, 06:35
27 Dec, 14:06
27 Dec, 10:45
easier-docker
предназначена для упрощения работы с Docker-контейнерами и изображениями прямо из Python-кода.pip install easier-docker
26 Dec, 10:45
Questionary
предназначена для создания интерактивных командных интерфейсов (CLI).Prompt Toolkit
.pip install questionary
25 Dec, 19:08
qrcode
.pip install qrcode
import qrcode
# Данные для подключения к Wi-Fi
ssid = 'Your_WiFi_SSID' # Имя сети
password = 'Your_WiFi_Password' # Пароль
# Формирование строки для подключения
wifi_string = f"WIFI:T:WPA;S:{ssid};P:{password};;"
# Генерация QR-кода
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
qr.add_data(wifi_string)
qr.make(fit=True)
# Создание изображения QR-кода
img = qr.make_image(fill='black', back_color='white')
# Сохранение изображения
img.save("wifi_qr.png")
25 Dec, 10:42
25 Dec, 06:18
Bandit
— это инструмент для анализа безопасности исходного кода Python. Используется для автоматического поиска потенциально уязвимых мест в коде.pip install bandit
24 Dec, 13:17
HTTPie
— это удобная библиотека и CLI-инструмент для взаимодействия с веб-сервисами через HTTP-запросы.pip install httpie
24 Dec, 10:45
PyPDF2
.pip install pypdf2
from pathlib import Path
from PyPDF2 import PdfMerger
def merge_pdfs_in_directory(directory_path, output_path):
# Создаём объект PdfMerger
merger = PdfMerger()
# Перебираем все PDF файлы в директории
for file_path in Path(directory_path).rglob('*.pdf'):
merger.append(file_path)
# Сохраняем объединённый PDF
merger.write(output_path)
merger.close()
directory_path = r'C:\путь\к\директории' # Путь к директории с PDF файлами
output_path = r'C:\путь\к\выходному_файлу\merged_output.pdf' # Путь для итогового файла
merge_pdfs_in_directory(directory_path, output_path)
24 Dec, 06:15
Prompt Toolkit
позволяет разрабатывать интерфейсы командной строки (CLI) с поддержкой автодополнения, подсветки синтаксиса, обработки событий и других функций.pip install prompt_toolkit
23 Dec, 23:00
23 Dec, 10:39
alive-progress
предназначена для создания прогресс-баров и спиннеров с анимацией в реальном времени.asyncio
.pip install alive-progress
23 Dec, 06:20
holidays
предназначена для работы с праздничными днями разных стран.pip install holidays
22 Dec, 16:25
you-get
предназначена для загрузки мультимедийного контента, такого как видео, аудио и изображения, с различных сайтов, включая YouTube, TikTok и т.д.pip install you-get
22 Dec, 14:31
pip install pygame
22 Dec, 13:23
22 Dec, 10:50
csv_trimming
предназначена для упрощения процесса очистки и преобразования CSV-файлов.pip install csv_trimming
21 Dec, 13:21
Chainsaw Human Typing
— это инструмент, предназначенный для имитации набора текста человеком. Полезен, когда нельзя вставлять текст напрямую.04 Dec, 13:13
TerminalTextEffects
позволяет создавать анимированные текстовые эффекты прямо в терминале.pip install terminaltexteffects
03 Dec, 13:16
Pyglet
предназначенная для разработки мультимедийных приложений, включая игры и другие графические приложения.pip install pyglet
03 Dec, 06:13
requests
и random
, а для работы с изображением - Pillow
.pip install requests
Pillow
import requests
from PIL import Image, ImageDraw, ImageFont
import random
# Получаем случайный шаблон мемов
def get_random_meme_template():
url = "https://api.imgflip.com/get_memes"
response = requests.get(url).json()
memes = response['data']['memes']
meme = random.choice(memes)
return meme['url']
# Создаём мем
def create_meme(image_url, text):
img = Image.open(requests.get(image_url, stream=True).raw)
draw = ImageDraw.Draw(img)
# Задаём параметры шрифта
font = ImageFont.truetype("arial.ttf", 40)
# Получаем размеры текста
text_bbox = draw.textbbox((0, 0), text, font=font)
text_width = text_bbox[2] - text_bbox[0]
text_height = text_bbox[3] - text_bbox[1]
# Смещаем текст выше от нижнего края
padding = 50 # Отступ от нижнего края
position = ((img.width - text_width) / 2, img.height - text_height - padding)
# Рисуем текст на изображении
draw.text(position, text, font=font, fill="white", stroke_fill="black", stroke_width=2)
img.save("meme.png")
print("Мем создан и сохранен как meme.png.")
meme_url = get_random_meme_template()
text = input("Введите текст для мема: ")
create_meme(meme_url, text)
02 Dec, 10:36
AnyIO
упрощает работу с асинхронным кодом в Python. Позволяет писать универсальные программы, которые могут работать с разными системами асинхронности, такими как asyncio
или Trio
.pip install anyio
02 Dec, 06:07
ingestr
— это инструмент командной строки, предназначенный для передачи данных между различными источниками и целевыми системами без необходимости писать код.pip install ingestr
01 Dec, 10:42
Sketch
— это утилита для генерации Python-кода с использованием моделей машинного обучения.pip install sketch
01 Dec, 06:15
gspread
предназначена для работы с Google Sheets через API.pip install gspread
30 Nov, 19:46
Tabled
предназначена для обнаружения и извлечения таблиц. Использует surya для поиска всех таблиц в формате PDF, определения строк/столбцов и форматирования ячеек в markdown, csv или html.pip install tabled-pdf
30 Nov, 15:00
30 Nov, 13:13
pip install movis
import movis as mv
# Создаём композицию с размером 1920x1080 пикселей и продолжительностью 8 секунд
scene = mv.layer.Composition(size=(1920, 1080), duration=8.0)
# Добавляем первый видео слой из файла 'video1.mp4' в композицию, начало с 0 секунды
video1 = scene.add_layer(mv.layer.Video('video1.mp4'), offset=0.0)
# Добавление второй видео слой из файла 'video2.mp4' в композицию, начало с 4 секунд
video2 = scene.add_layer(mv.layer.Video('video2.mp4'), offset=4.0)
# Сохраняем итоговое видео
scene.write_video('multi_video_layer.mp4')
30 Nov, 06:20
Mitmproxy
предназначена для анализа и модификации HTTP, HTTPS и WebSocket трафика.pip install mitmproxy
28 Nov, 13:16
Wakepy
— это небольшая утилита на Python, предназначенная для предотвращения перехода компьютера в спящий режим.pip install wakepy
28 Nov, 10:42
Movis
предназначена для видеообработки, ориентирована на создание анимаций, презентационных роликов, графики и других видеоэффектов с помощью кода.import movis as mv
# Создаём композицию размером 1920x1080 пикселей и длительностью 5 секунд
scene = mv.layer.Composition(size=(1920, 1080), duration=5.0)
# Добавляем фоновый прямоугольник красного цвета
scene.add_layer(mv.layer.Rectangle(scene.size, color='#fb4562'))
# Добавляем текстовый слой с анимацией появления
text_layer = scene.add_layer(
mv.layer.Text('Hello World!', font_size=100, font_family='Arial', color='#ffffff'),
offset=1.0, # Текст появится через 1 секунду
position=(960, 540), # Центр композиции
opacity=0.0 # Начальная прозрачность
)
# Анимация плавного появления текста
text_layer.opacity.enable_motion().extend([0.0, 1.0], [0.0, 1.0])
# Сохраняем видео
scene.write_video('output.mp4')
pip install movis
27 Nov, 16:11
3DTopia-XL
— это утилита для 3D-рендеринга и генерации текстурных моделей. Основана на современных нейросетевых подходах и использует технологии дифференцируемого рендеринга.PyMCubes
, pymeshlab
и libigl
.PyTorch
и Transformers
.27 Nov, 13:13
Trio
— это асинхронная библиотека для конкурентного программирования, которая предоставляет простой и эффективный способ написания асинхронных программ с использованием принципов asyncio
, но с упрощенным и более интуитивно понятным API.asyncio
.Trio
легко управлять отменой задач, что помогает безопасно завершать выполнение при ошибках или по запросу пользователя.pip install trio
27 Nov, 06:10
pandas
.pip install pandas openpyxl lxml
import pandas as pd
# Чтение HTML-файла с таблицами
html_file = 'example.html' # Указываем путь к HTML-файлу с таблицами
# Читаем все таблицы из HTML-файла, возвращается список DataFrame
tables = pd.read_html(html_file)
# Проверяем, что таблицы загружены
if tables: # Условие проверяет, есть ли таблицы в списке
# Открываем Excel-файл для записи с использованием ExcelWriter
with pd.ExcelWriter('output.xlsx', engine='openpyxl') as writer:
# Перебираем таблицы и записываем каждую на отдельный лист
for i, table in enumerate(tables):
# Сохраняем текущую таблицу в Excel, создавая новый лист для каждой
table.to_excel(writer, sheet_name=f'Table_{i+1}', index=False)
# Сообщаем, что все таблицы успешно сохранены
print("Все таблицы успешно сохранены в Excel.")
else:
# Выводим сообщение, если таблиц в HTML-файле не обнаружено
print("Таблицы не найдены в HTML-файле.")
24 Nov, 13:12
tkforge
предназначена для упрощения создания графических интерфейсов с использованием tkinter
.tkinter
.23 Nov, 13:30
Pillow
.pip install Pillow
from PIL import Image
def image_to_ascii(image_path, output_path, width=100):
# Открываем изображение по указанному пути
img = Image.open(image_path)
# Конвертируем изображение в градации серого ('L' - режим grayscale)
img = img.convert('L')
# Вычисляем соотношение сторон изображения
aspect_ratio = img.height / img.width
# Определяем новую высоту, сохраняя соотношение сторон
new_height = int(aspect_ratio * width * 0.55)
# Изменяем размер изображения согласно новым параметрам
img = img.resize((width, new_height))
# Получаем пиксельные данные изображения
pixels = img.getdata()
# Определяем набор символов для ASCII
chars = ["@", "#", "S", "%", "?", "*", "+", ";", ":", ",", "."]
# Преобразуем пиксели в ASCII символы
ascii_str = "".join([chars[pixel // 25] for pixel in pixels])
# Получаем длину строки ASCII
ascii_str_len = len(ascii_str)
# Формируем строку ASCII изображения с нужной шириной
ascii_img = "\n".join([ascii_str[index: index + width] for index in range(0, ascii_str_len, width)])
# Открываем файл в режиме для записи
with open(output_path, "w") as f:
# Записываем ASCII изображение в файл
f.write(ascii_img)
image_to_ascii('image.png', 'output.txt')
23 Nov, 10:48
22 Nov, 16:19
AudioFlux
позволяет анализировать, визуализировать и обрабатывать аудио сигналы.pip install audioflux
22 Nov, 10:51
Hug
— это легковесный фреймворк для создания API и web-приложений на Python. Ориентирован на упрощение разработки API, обеспечивая интуитивно понятный интерфейс и минимальные усилия при настройке.Starlette
или FastAPI
).Hug
, легко масштабируются благодаря поддержке асинхронных операций.pip install hug
08 Nov, 16:31
Dash
предназначена для создания веб-приложений с интерактивными визуализациями данных.Flask
(для серверной части), React
(для фронтенда) и Plotly
(для построения графиков).Plotly
.Dash
легко развертывать на сервере или в облаке, что упрощает доступ к ним для конечных пользователей.pip install dash
08 Nov, 12:31
python-benedict
предназначена для работы со словарями и предоставляет расширенные возможности по сравнению с обычными словарями.pip install "python-benedict[all]"
08 Nov, 09:26
07 Nov, 13:23
BeautifulSoup4
.pip install beautifulsoup4
from bs4 import BeautifulSoup
def extract_tables_from_file(file_path):
# Открываем файл по указанному пути в режиме чтения с кодировкой UTF-8
with open(file_path, 'r', encoding='utf-8') as file:
# Читаем содержимое файла и сохраняем его в переменной html
html = file.read()
# Создаем объект BeautifulSoup для парсинга HTML-кода
soup = BeautifulSoup(html, 'html.parser')
# Инициализируем пустой список для хранения извлеченных таблиц
tables = []
# Находим все элементы <table> в HTML-документе
for table in soup.find_all('table'):
# Инициализируем пустой список для хранения строк текущей таблицы
rows = []
# Находим все строки <tr> в текущей таблице
for row in table.find_all('tr'):
# Извлекаем текст из всех ячеек <td> и <th>, убирая лишние пробелы
cells = [cell.get_text(strip=True) for cell in row.find_all(['td', 'th'])]
# Добавляем список ячеек в список строк
rows.append(cells)
# Добавляем список строк в общий список таблиц
tables.append(rows)
# Возвращаем список всех извлеченных таблиц
return tables
# Вызываем функцию и выводим результат для файла 'example.html'
print(extract_tables_from_file('example.html'))
07 Nov, 06:19
EasyOCR
предназначена для оптического распознавания текста (OCR). Поддерживает множество языков (более 80) и отличается простотой использования.PyTorch
и OpenCV
.pip install easyocr
06 Nov, 13:37
Vosk
позволяет преобразовывать аудио в текст без необходимости подключения к интернету.Vosk
работает полностью офлайн.pip install vosk
06 Nov, 06:17
pdf2docx
.pip install pdf2docx
from pathlib import Path
from pdf2docx import Converter
# Определяем путь к директории с PDF файлами
pdf_dir = Path('pdf_files')
# Определяем путь к директории, куда будут сохранены DOCX файлы
docx_dir = Path('docx_files')
# Проверяем, существует ли директория для DOCX файлов
if not docx_dir.exists():
# Если директория не существует, создаём её
docx_dir.mkdir()
# Проходимся по всем PDF файлам в директории pdf_files
for pdf_file in pdf_dir.glob('*.pdf'): # Используем метод glob для поиска всех файлов с расширением .pdf
# Создаём путь для нового DOCX файла, заменяя расширение на .docx
docx_file = docx_dir / pdf_file.with_suffix('.docx').name
# Создаем экземпляр Converter для текущего PDF файла
cv = Converter(pdf_file)
# Конвертируем PDF файл в DOCX и сохраняем его по указанному пути
cv.convert(docx_file)
# Закрываем экземпляр Converter после завершения конвертации
cv.close()
05 Nov, 10:47
regex
— это продвинутая альтернатива стандартному модулю re
для работы с регулярными выражениями.re
.pip install regex
25 Oct, 07:05
stumpy
предназначена для вычисления матричных профилей и анализа временных рядов с использованием алгоритмов, оптимизированных для высокой производительности.stumpy
эффективно ищет такие уникальные аномалии, что важно для задач мониторинга и прогнозирования.pip install stumpy
24 Oct, 11:34
fpdf2
— это инструмент для создания PDF-документов программным способом. Является обновлённой и расширенной версией оригинальной библиотеки FPDF, которая долгое время использовалась для тех же целей.ReportLab
, fpdf2
фокусируется на простоте использования и лёгкости в освоении.from fpdf import FPDF
# Создаём PDF-документ
pdf = FPDF()
pdf.add_page()
# Устанавливаем шрифт
pdf.set_font("helvetica", size=12)
# Добавляем текст
pdf.cell(200, 10, text="Hello, World!", align='C')
# Сохраняем PDF
pdf.output("hello_world.pdf")
pip install fpdf2
24 Oct, 06:20
tempfile
, для создания контекстного менеджера - contextlib
, а для работы с файловой системой и удаления файла - pathlib
.import tempfile
from contextlib import contextmanager
from pathlib import Path
import time
@contextmanager
def temporary_file(suffix='', prefix='tmp', dir=None):
temp_file = tempfile.NamedTemporaryFile(suffix=suffix, prefix=prefix, dir=dir, delete=False)
try:
# Возвращаем имя временного файла
yield temp_file.name
finally:
# Закрываем файл перед удалением
temp_file.close()
time.sleep(5)
try:
# Используем unlink() для удаления файла
Path(temp_file.name).unlink()
except OSError as e:
print(f"Ошибка при удалении файла {temp_file.name}: {e}")
# Пример использования
if __name__ == "__main__":
with temporary_file(suffix='.txt') as temp_file_name:
print(f"Создан временный файл: {temp_file_name}")
# Работа с временным файлом
try:
with open(temp_file_name, 'w', encoding='utf-8') as f:
f.write("Привет, мир!")
except Exception as e:
print(f"Ошибка при записи в файл {temp_file_name}: {e}")
print("Временный файл удалён автоматически.")
23 Oct, 10:50
logfire
разработана для удобного и структурированного логирования. Предназначена для работы с библиотекой Pydantic и позволяет автоматически генерировать лог-сообщения из классов Pydantic
.Pydantic
. Это упрощает процесс логирования, поскольку вам не нужно вручную добавлять поля в каждое сообщение.logging
, что позволяет использовать его в уже существующих проектах без необходимости полной переработки логирования.Pydantic
, logfire
обеспечивает строгую типизацию данных, что помогает избежать ошибок и улучшает читаемость кода.pip install logfire
23 Oct, 06:19
Boltons
предоставляет набор модулей с утилитами и функциями для повседневной разработки. Cодержит коллекцию функций и классов, которые можно рассматривать как расширение стандартной библиотеки Python.Boltons
является то, что она не привносит новых зависимостей и сосредоточена на предоставлении простых и удобных инструментов.pip install boltons
22 Oct, 16:56
Ibis
- это библиотека для аналитики данных в Python, предназначенная для упрощения работы с большими данными и абстрагирования сложности различных систем управления базами данных (СУБД).Pandas
.Pandas
, что значительно упрощает работу с большими данными, не заставляя разработчика вручную писать SQL-запросы.execute()
), запрос отправляется в базу данных.pip install 'ibis-framework[duckdb,examples]'
21 Oct, 10:41
PyUIBuilder
- интуитивно понятный конструктор графического интерфейса для Python, который позволяет создавать пользовательские интерфейсы с помощью методов перетаскивания и размещения элементов.Tkinter
, CustomTkinter
и Kivy
(в будущем также планируется поддержка PySide
).21 Oct, 06:21
20 Oct, 10:08
vectorlite-py
предназначена для быстрого поиска векторов в базе данных SQLite.vector_distance()
может выполнять точный поиск путем сравнения расстояний между векторами, используя такие метрики, как косинусное расстояние и расстояние L2.pip install vectorlite-py
19 Oct, 06:43
tkintermapview
предоставляет виджет для отображения карт в приложениях, разработанных с использованием tkinter
. Позволяет интегрировать карты на основе OpenStreetMap.import tkinter as tk
from tkintermapview import TkinterMapView
# Создание главного окна
root = tk.Tk()
root.title("Пример TkinterMapView")
# Создание виджета карты
map_view = TkinterMapView(root, width=800, height=600, corner_radius=0)
map_view.pack(fill="both", expand=True)
# Установка начального местоположения и уровня масштабирования
map_view.set_position(55.030204, 82.920430) # Новосибирск
map_view.set_zoom(10)
# Добавление маркера
map_view.set_marker(55.030204, 82.920430, "Новосибирск")
# Запуск главного цикла приложения
root.mainloop()
pip install tkintermapview
18 Oct, 06:14
csv-trimming
предназначена для упрощения работы с CSV-файлами, позволяя удалять пробелы, символы новой строки и другие нежелательные символы из значений ячеек.pip install csv-trimming
17 Oct, 11:13
pisegment
предназначена для полууправляемой сегментации изображений.pip install pisegment
pisegment --input "path/to/image/tobe/segmented" --mask "path/to/the/generated/annotation"
17 Oct, 06:07
apsw
(Another Python SQLite Wrapper) предназначена для работы с SQLite в Python. Предоставляет более низкоуровневый доступ к функциям SQLite по сравнению с стандартным модулем sqlite3
.sqlite3
.import apsw
# Создаём базу данных
connection = apsw.Connection("example.db")
cursor = connection.cursor()
# Создаём таблицу
cursor.execute("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)")
# Вставляем данные
cursor.execute("INSERT INTO users (name) VALUES (?)", ("Иван",))
cursor.execute("INSERT INTO users (name) VALUES (?)", ("Ирина",))
# Извлекаем данные
for row in cursor.execute("SELECT * FROM users"):
print(row)
# Закрываем соединение
connection.close()
pip install apsw
16 Oct, 10:42
Pillow
.pip install Pillow
from PIL import Image, ImageFilter
def add_blur_to_area(image_path, output_path, box):
# Открываем изображение
image = Image.open(image_path)
# Извлекаем область для размытия
area = image.crop(box)
# Применяем блюр к области
blurred_area = area.filter(ImageFilter.GaussianBlur(radius=10))
# Вставляем размытую область обратно в изображение
image.paste(blurred_area, box)
# Сохраняем новое изображение
image.save(output_path)
# Пример использования
image_path = 'image.jpg' # Путь к вашему изображению
output_path = 'output_image.jpg' # Путь к сохранению нового изображения
box = (50, 900, 700, 1400) # Задаём координаты области (x1, y1, x2, y2)
add_blur_to_area(image_path, output_path, box)
16 Oct, 06:12
tktimepicker
предоставляет виджет выбора времени для интерфейсов, разработанных с использованием библиотеки tkinter
.tkinter
, что позволяет быстро добавить функционал выбора времени.import tkinter as tk
from tktimepicker import AnalogPicker, AnalogThemes
# Создаём основное окно приложения
root = tk.Tk()
# Создаём виджет выбора времени и передаем ему основное окно
time_picker = AnalogPicker(root)
# Размещаем виджет, позволяя ему расширяться и заполнять все доступное пространство
time_picker.pack(expand=True, fill="both")
# Создаём объект темы для виджета выбора времени
theme = AnalogThemes(time_picker)
# Устанавливаем тему Dracula для виджета
theme.setDracula()
root.mainloop()
pip install tkTimePicker
15 Oct, 13:10
clean-text
предназначена для очистки текстов от нежелательных символов и форматирования.pip install clean-text
15 Oct, 10:40
Django-Unicorn
добавляет функциональность реактивных компонентов в шаблоны Django
. Позволяет создавать интерактивные элементы без необходимости изучать новый язык шаблонов или использовать сложные JavaScript-фреймворки.Django
.Django
: полная поддержка работы с Django ORM и другими функциями фреймворка.pip install django-unicorn
14 Oct, 16:18
Jedi
предназначена для поддержки интеллектуального анализа кода, автодополнения и навигации в Python-коде.pip install jedi
14 Oct, 06:15
PandasGUI
предоставляет графический интерфейс для работы с данными в формате DataFrame
из библиотеки pandas
.DataFrame
: Возможность загружать данные из разных источников (CSV, Excel, SQL и т.д.) и просматривать их в формате таблицы. Также доступны такие функции, как сортировка, фильтрация и групповое редактирование данных через удобные меню.DataFrame
: Возможность загружать и управлять несколькими наборами данных одновременно.pandas
более интерактивной и интуитивно понятной.import pandas as pd
from pandasgui import show
# Создаем DataFrame
data = pd.DataFrame({
'Имя': ['Анна', 'Борис', 'Виктор', 'Галина'],
'Возраст': [23, 30, 35, 29],
'Город': ['Москва', 'Санкт-Петербург', 'Новосибирск', 'Казань']
})
# Запускаем PandasGUI
show(data)
pip install pandasgui
13 Oct, 13:20
os
и zipfile
import zipfile
import os
def archive_folder(zip_name, folder_path):
# Создаём новый ZIP-архив с именем zip_name
# Параметр 'w' означает, что мы создаём архив с нуля, ZIP_DEFLATED для сжатия
with zipfile.ZipFile(zip_name, 'w', zipfile.ZIP_DEFLATED) as zipf:
# Используем os.walk для рекурсивного обхода всех файлов и папок внутри folder_path
for root, dirs, files in os.walk(folder_path):
# Проходимся по всем файлам в текущей директории
for file in files:
# Получаем полный путь к файлу
file_path = os.path.join(root, file)
# Добавляем файл в архив, сохраняя относительный путь от корневой папки
zipf.write(file_path, os.path.relpath(file_path, folder_path))
# Выводим сообщение о том, что файл был добавлен
print(f'Файл {file_path} добавлен в архив.')
# Пример использования
folder_to_archive = 'my_folder' # Указываем папку, которую хотим архивировать
archive_name = 'my_folder_archive.zip' # Указываем имя для создаваемого архива
# Вызываем функцию архивации папки
archive_folder(archive_name, folder_to_archive)
13 Oct, 06:20
emoji
предназначена для работы с эмодзи, упрощая процесс их добавления и использования в тексте.import emoji
print(emoji.emojize("Python is fun :snake:"))
# Вывод: Python is fun 🐍
pip install emoji