Paramiko — это модуль Python, реализующий протокол SSHv2. Он обеспечивает возможность подключения к удаленным серверам по протоколу SSH и выполнения различных операций на них, таких как выполнение команд, передача файлов и создание туннелей.
import paramiko
# Создаем объект SSHClient
ssh = paramiko.SSHClient()
# Устанавливаем политику авторизации (автоматически добавляем хосты в known_hosts)
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# Подключаемся к серверу
ssh.connect(hostname='example.com', username='user', password='password')
# Выполняем команду на сервере
stdin, stdout, stderr = ssh.exec_command('ls -l')
# Читаем вывод команды
print(stdout.read().decode())
# Закрываем соединение
ssh.close()
pip install paramiko
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
В первой части мы разобрались с чтением и записью JSON-данных. Теперь давайте посмотрим, как преобразовать Python-объекты в JSON, настроить сериализацию и эффективно использовать модуль json.
Чтобы конвертировать Python-объект в JSON-строку, используется функция
json.dumps:import json
# Python-словарь
data = {
"name": "Alice",
"age": 25,
"is_active": True
}
# Преобразование в JSON-строку
json_data = json.dumps(data)
print(json_data) # {"name": "Alice", "age": 25, "is_active": true}
dict, list, str, int, float и bool, автоматически преобразуются в их JSON-аналоги.Если данные содержат нестандартные типы, такие как
datetime, то их нужно преобразовать перед сериализацией.Пример:
import json
from datetime import datetime
# Python-данные с датой
data = {
"name": "Alice",
"created_at": datetime.now()
}
# Кастомная функция для обработки объектов
def custom_serializer(obj):
if isinstance(obj, datetime):
return obj.isoformat()
raise TypeError("Невозможно сериализовать объект")
# Сериализация с кастомной функцией
json_data = json.dumps(data, default=custom_serializer, indent=4)
print(json_data)
Добавьте параметр
indent для читабельности:json_data = json.dumps(data, indent=4)
Для сортировки ключей используйте
sort_keys=True:json_data = json.dumps(data, sort_keys=True)
Используйте
parse_int и parse_float для контроля обработки чисел:json.loads('{"big_number": 12345678901234567890}', parse_int=lambda x: int(x))Если было полезно, ставь🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍6❤2
Для создания такого скрипта, нам потребуется библиотека — psutil. С её помощью можно отслеживать загрузку процессора, использование памяти, работу дисков и сети.
import psutil
import time
def monitor_server():
print("Мониторинг сервера...")
print("-" * 40)
while True:
# Загрузка процессора
cpu_usage = psutil.cpu_percent(interval=1)
print(f"Загрузка CPU: {cpu_usage}%")
# Использование памяти
memory = psutil.virtual_memory()
print(f"Память: {memory.percent}% использовано ({memory.used / 1e+6:.2f} MB из {memory.total / 1e+6:.2f} MB)")
# Использование дисков
disk = psutil.disk_usage('/')
print(f"Диск: {disk.percent}% использовано ({disk.used / 1e+9:.2f} GB из {disk.total / 1e+9:.2f} GB)")
# Загрузка сети
net = psutil.net_io_counters()
print(f"Сеть: Отправлено {net.bytes_sent / 1e+6:.2f} MB, Получено {net.bytes_recv / 1e+6:.2f} MB")
print("-" * 40)
time.sleep(5) # Интервал обновления (в секундах)
# Запуск мониторинга
monitor_server()
— Измеряет процент использования всех ядер.
— Показывает, сколько памяти занято и свободно.
— Оценивает использование главного раздела /.
— Выводит объём переданных и полученных данных.
pip install psutil
Скрипт можно доработать, добавив запись логов или прикрутить к боту для отправки уведомлений в Telegram при превышении заданных порогов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥1
Python известен своей простотой и предсказуемостью, но за этой доступностью скрываются интересные и неочевидные особенности, способные удивить программистов с базовым опытом(а если повезет, то и опытных). В этой статье мы рассмотрим несколько таких «фокусов» и тонкостей, чтобы глубже понять внутреннюю логику и философию языка.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
📂 Сохраняем
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥7❤2
Декораторы можно делать настраиваемыми, передавая параметры в сам декоратор. Это позволяет динамически изменять поведение функций.
Создадим декоратор, который повторяет выполнение функции заданное количество раз:
def repeat(n):
def decorator(func):
def wrapper(*args, **kwargs):
for _ in range(n):
func(*args, **kwargs)
return wrapper
return decorator
@repeat(3) # Выполнится 3 раза
def say_hello():
print("Привет!")
say_hello()
Привет!
Привет!
Привет!
В этом примере мы передаем число
n в декоратор, чтобы он выполнял функцию несколько раз.Это удобно, например, для логирования, проверки прав доступа или многократного выполнения задач, когда поведение нужно настраивать динамически.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤🔥3
Каждая глава посвящена разработке новой программы, от генерации паролей до создания забавных шекспировских оскорблений. Издание идеально подойдет для тех, кто только начинает знакомиться с программированием, а также для опытных пользователей, желающих освоить Python.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
В этой статье автор показывает один из методов парсинга на Python на примере маркетплейса Wildberries.
Суть подхода в том, что мы будем не разбирать запрошенную html страницу по ссылке, а будем использовать API сайта, который используется сервисом для получения и отображения всех товаров требуемой категории.
requests — для парсинга данных API.aiogram 3.10.0 — одна из самых популярных библиотек для разработки telegram ботов.Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
👩💻 Python Roadmap — подробный гид для изучения Python, подходящий для новичков и продвинутых разработчиков.
📌 Что внутри:
🟢 Полный список тем от основ синтаксиса до продвинутых концепций, включая ООП, асинхронность и многопоточность.
🟢 Рекомендации по библиотекам и фреймворкам.
🟢 Советы по изучению Python для веб-разработки, анализа данных, машинного обучения и DevOps.
🟢 Ссылки на полезные ресурсы и документацию.
📱 Ссылка на репозиторий
🐍 Ghostly Python | #ресурсы
Кто хочет структурировать свое обучение Python — сохраняйте👍
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥1
PyFilesystem — это библиотека для работы с файловыми системами через единый API. Она позволяет взаимодействовать с локальными и удаленными файловыми системами, архивами, облачными хранилищами и т.д.
Подходит для разработчиков, которым нужно работать с различными типами файловых систем, не заботясь об их специфике.
from fs import open_fs
# Работа с локальной файловой системой
fs = open_fs('.')
# Создание файла
fs.writetext('example.txt', 'Привет, PyFilesystem!')
# Чтение файла
content = fs.readtext('example.txt')
print(content)
# Просмотр списка файлов в директории
for path in fs.listdir('/'):
print(path)
# Работа с ZIP-архивом
zip_fs = open_fs('zip://example.zip', writeable=True)
zip_fs.writetext('file_in_zip.txt', 'Это внутри архива.')
PyFilesystem значительно упрощает работу с файлами на различных хранилищах и системах.
pip install fs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🥰3
Допустим, у вас есть два словаря и вы хотели бы легко объединить их в один. Для этого вы можете использовать нотацию
** для **kwargs-подобных объектов, чтобы удобно их объединить.dict1 = {"A": 10, "B": 20, "C": 30}
dict2 = {"X": 100, "Y": 200, "Z": 300}
dict3 = {**dict1, **dict2}
print(dict3){'A': 10, 'B': 20, 'C': 30, 'X': 100, 'Y': 200, 'Z': 300}Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥7❤3
Большинство Python-программ работает синхронно: код выполняется последовательно, строка за строкой. Если программе нужно отправить запрос (например, к серверу погоды), она ждет ответа и лишь затем продолжает выполнение. Для небольших проектов такой подход вполне подходит, но в высоконагруженных сервисах он становится узким местом.
Асинхронный подход позволяет программе не простаивать в ожидании ответа от внешнего сервиса. Вместо этого она может выполнять другие задачи, пока запрос обрабатывается. Это особенно полезно для серверов, обрабатывающих тысячи одновременных запросов.
Так вот, подробнее об этом подходе вы узнаете из этой статьи.
— Объяснение основ асинхронного программирования в Python.
— Показаны примеры использования библиотек asyncio и других инструментов для написания асинхронного кода.
— Разбираются ситуации, когда асинхронность дает значительный прирост производительности.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Срезы — это мощный инструмент в Python для работы с последовательностями, такими как строки, списки и кортежи. Они позволяют извлекать части данных из последовательности, делая код более гибким и читаемым.
sequence[start:stop:step]
start — начальный индекс (включительно, по умолчанию 0).stop — конечный индекс (не включается).step — шаг (по умолчанию 1).1. Извлечь подмножество:
numbers = [0, 1, 2, 3, 4, 5]
print(numbers[1:4]) # [1, 2, 3]
2. Пропустить элементы:
print(numbers[::2]) # [0, 2, 4]
3. Перевернуть список:
print(numbers[::-1]) # [5, 4, 3, 2, 1, 0]
4. Взять элементы с конца:
print(numbers[-3:]) # [3, 4, 5]
5. Извлечь строку:
text = "Python"
print(text[1:5]) # ytho
Более подробно изучить тему, а также попрактиковаться на примере строк, вы можете здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥14🔥7👍4❤3🥱1
Media is too big
VIEW IN TELEGRAM
В данном видео автор на практике покажет решение трех задач с собеседования на позицию Junior Python. А также расскажет, что нужно говорить во время собеса и что пригодится кроме умения решать задачи.
0:00 - Что вас ждет
0:45 - 1 задача (легкая)
6:43 - Определяем алгоритмическую сложность
8:58 - 2 задача (средняя)
12:44 - Момент ступора...
16:06 - 3 задача (самая сложная)
24:23 - Что нужно говорить вслух
31:48 - Что важно уметь кроме решения задач
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Там вы найдете множество идей для простых и увлекательных проектов: игры, генераторы паролей, таймеры и многое другое.
Примечательно то, что ко всему перечисленному прилагается уже готовый исходный код.
В общем, кому нужно больше практики — сохраняйте👍
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥6
Cerberus — это легковесная библиотека для валидации данных. Она позволяет проверять соответствие данных указанным схемам и поддерживает простую и гибкую настройку правил валидации.
Подходит для разработчиков, которым нужно быстро настроить валидацию данных без сложных зависимостей, с поддержкой пользовательских правил валидации.
from cerberus import Validator
# Определение схемы валидации
schema = {
'name': {'type': 'string', 'maxlength': 10},
'age': {'type': 'integer', 'min': 18},
'email': {'type': 'string', 'regex': '^[\w\.-]+@[\w\.-]+$'}
}
# Создание валидатора
v = Validator(schema)
# Данные для проверки
user_data = {'name': 'Alice', 'age': 24, 'email': 'alice@example.com'}
# Валидация данных
if v.validate(user_data):
print("Данные корректны")
else:
print("Ошибки в данных:", v.errors)
pip install cerberus
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤5
Как и в любом другом языке программирования, конструкторы в Python предназначены для инициализации новых объектов. Неправильное использование конструкторов может привести к различным проблемам в программе.
В этой статье, вы узнаете об этом подробнее.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9
Если вы создаете свои классы, вы можете сделать их интуитивно понятными, переопределяя стандартные операторы. Это позволяет работать с вашими объектами, как с базовыми типами, улучшая читаемость и удобство использования кода.
Создание вектора с поддержкой арифметических операций:
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
return Vector(self.x + other.x, self.y + other.y)
def __sub__(self, other):
return Vector(self.x - other.x, self.y - other.y)
def __mul__(self, scalar):
return Vector(self.x * scalar, self.y * scalar)
def __repr__(self):
return f"Vector({self.x}, {self.y})"
# Пример использования
v1 = Vector(2, 3)
v2 = Vector(1, 4)
print(v1 + v2) # Vector(3, 7)
print(v1 - v2) # Vector(1, -1)
print(v1 * 3) # Vector(6, 9)
Переопределение операторов в Python улучшает читаемость кода, позволяет кастомизировать их поведение для объектов вашего класса и легко расширять функционал, добавляя поддержку новых операций.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥6👍4
Если вы хотите быстро освежить свои знания Python или только начинаете знакомиться с этим языком, то обязательно обратите внимание на эту шпаргалку.
Автор включил синтаксис для каждой концепции Python от начального до продвинутого уровня.
— Базовые конструкции: переменные, типы данных, операторы, условные конструкции и циклы.
— Стандартная библиотека: полезные функции для работы с файлами, коллекциями и многим другим.
— Продвинутые темы: декораторы, генераторы, обработка исключений и многое другое.
— Советы по оптимизации: практические рекомендации для написания чистого и быстрого кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥1
Media is too big
VIEW IN TELEGRAM
Этот урок посвящен созданию и развертыванию приложений на FastAPI. Он охватывает основные аспекты, начиная с использования FastAPI для разработки веб-приложений и API, и заканчивая интеграцией с базами данных.
Вы научитесь писать простейшие приложения, применять Pydantic для валидации данных, работать с базами данных через паттерн репозиторий, а также использовать роутеры для организации кода. Кроме того, будет рассмотрен процесс контейнеризации приложения с помощью Docker и его развертывание на облачных серверах.
Урок предоставляет всесторонний подход к созданию производительных и современных веб-приложений.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤5🔥4