Ghostly Python
9.02K subscribers
535 photos
24 videos
599 links
Погружаемся в мир Python: задачи, фишки, библиотеки и террабайты полезного материала.

Сотрудничество: @heywan_n1

Цены: @heywan_media

Реклама на бирже: https://telega.in/c/+IOa15XDNbxRkYzNi
Download Telegram
👨‍💻 Гайд: Как работать с JSON в Python. Часть 1

JSON (JavaScript Object Notation) — это текстовый формат обмена данными, который часто используется в API, конфигурационных файлах и при работе с веб-приложениями. В Python для работы с JSON используется встроенный модуль json.

1️⃣ Чтение JSON-строк

Вы можете загружать JSON-данные из строки с помощью функции json.loads.

import json

# JSON-строка
data = '{"name": "Alice", "age": 25, "hobbies": ["reading", "coding"]}'

# Преобразуем строку в Python-словарь
parsed_data = json.loads(data)
print(parsed_data["name"]) # Alice
print(parsed_data["hobbies"]) # ['reading', 'coding']


2️⃣ Чтение JSON из файла

Если JSON-данные хранятся в файле, используйте функцию json.load.

import json

# Открываем файл с JSON
with open("data.json", "r") as file:
data = json.load(file)

# Работаем с данными
print(data["name"]) # Alice
print(data["age"]) # 25


➡️ Пример файла data.json:

{
"name": "Alice",
"age": 25,
"hobbies": ["reading", "coding"]
}


3️⃣ Запись JSON в файл

Функция json.dump сохраняет данные Python в файл в формате JSON.

import json

# Данные для записи
data = {
"status": "success",
"code": 200,
"message": "Data saved successfully!"
}

# Сохраняем в файл
with open("output.json", "w") as file:
json.dump(data, file, indent=4) # indent=4 делает JSON читабельным


➡️ Результат в файле output.json:

{
"status": "success",
"code": 200,
"message": "Data saved successfully!"
}


Чтобы не растягивать пост, я решил разбить эту тему на несколько частей. Во второй части рассмотрим: преобразование Python-объектов в JSON, настройку сериализации JSON, а также несколько советов по использованию модуля json.

🐍 Ghostly Python | #гайды
Please open Telegram to view this post
VIEW IN TELEGRAM
👍87🔥3👏1
📸 Скрипт: Сортировка фотографий по дате съёмки с помощью Python

Наверное у каждого есть папка с фотографиями, в которой свалено просто все, что можно, в одну кучу... Так вот если вы все таки надумали навести порядок, то можно организовать фото по дате съёмки с помощью библиотеки Pillow.

⚙️ Как это работает?

Фотографии часто содержат метаданные EXIF, где хранится дата съёмки. Мы используем её для создания папок и перемещения файлов.

✔️ Установка библиотеки

Для работы скрипта, потребуется установить библиотеку Pillow:

pip install pillow


📌 Что делает этот скрипт:

1. Считывает дату съёмки из EXIF-метаданных, а если их нет, то берет дату создания файла.
2. Создаёт папки для каждой даты (формат: YYYY-MM-DD).
3. Перемещает фотографии в соответствующие папки.

📂 Скрипт с комментированием кода уже в архиве:


➡️ Скачать...

🐍 Ghostly Python | #скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
📱 Списки (массивы) в Python и работа с ними

Статья рассказывает о списках в Python — одном из самых универсальных и часто используемых инструментов для работы с данными.

📌 Вы узнаете:

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

🖥 Перейти к статье

🐍 Ghostly Python | #статьи
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
🖥 Paramiko: модуль Python для работы с SSH-соединениями

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


➡️ Документация paramiko

🐍 Ghostly Python | #библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
👨‍💻 Гайд: Как работать с JSON в Python. Часть 2

В первой части мы разобрались с чтением и записью JSON-данных. Теперь давайте посмотрим, как преобразовать Python-объекты в JSON, настроить сериализацию и эффективно использовать модуль json.

1️⃣ Преобразование Python-объектов в 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}


➡️ Типы данных Python, такие как dict, list, str, int, float и bool, автоматически преобразуются в их JSON-аналоги.

2️⃣ Настройка сериализации 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)


💡 Советы и трюки при работе с JSON

1️⃣ Форматированный вывод JSON

Добавьте параметр indent для читабельности:

json_data = json.dumps(data, indent=4)


2️⃣ Сортировка ключей

Для сортировки ключей используйте sort_keys=True:

json_data = json.dumps(data, sort_keys=True)


3️⃣ Декодирование больших чисел

Используйте parse_int и parse_float для контроля обработки чисел:

json.loads('{"big_number": 12345678901234567890}', parse_int=lambda x: int(x))


Если было полезно, ставь 🔥


🐍 Ghostly Python | #гайды
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍62
💻 Скрипт для мониторинга нагрузки сервера с использованием psutil

Для создания такого скрипта, нам потребуется библиотека — 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 при превышении заданных порогов.

🐍 Ghostly Python | #скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥1
👩‍💻 Python: неочевидное и вероятное

Python известен своей простотой и предсказуемостью, но за этой доступностью скрываются интересные и неочевидные особенности, способные удивить программистов с базовым опытом(а если повезет, то и опытных). В этой статье мы рассмотрим несколько таких «фокусов» и тонкостей, чтобы глубже понять внутреннюю логику и философию языка.

🖥 Перейти к статье

🐍 Ghostly Python | #статьи
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🔥 Подборка лучших библиотек и фреймворков Python для любых задач.

📂 Сохраняем


🐍 Ghostly Python | #библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥72
📱 Фишка: Декораторы с аргументами для настройки поведения

Декораторы можно делать настраиваемыми, передавая параметры в сам декоратор. Это позволяет динамически изменять поведение функций.

⚙️ Пример

Создадим декоратор, который повторяет выполнение функции заданное количество раз:

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 в декоратор, чтобы он выполнял функцию несколько раз.

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


🐍 Ghostly Python | #фишки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤‍🔥3
📖 Python для начинающих. Учимся программировать с помощью мини-игр и загадок

Каждая глава посвящена разработке новой программы, от генерации паролей до создания забавных шекспировских оскорблений. Издание идеально подойдет для тех, кто только начинает знакомиться с программированием, а также для опытных пользователей, желающих освоить Python.

🗄 Скачать PDF из архива

🐍 Ghostly Python | #книги
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
📱 Бот-парсер маркетплейса на Python

В этой статье автор показывает один из методов парсинга на Python на примере маркетплейса Wildberries.

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

📌 В проекте будут использоваться следующие библиотеки:

🟢 requests — для парсинга данных API.
🟢 aiogram 3.10.0 — одна из самых популярных библиотек для разработки telegram ботов.

🖥 Перейти к статье

🐍 Ghostly Python | #статьи
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
👩‍💻 Python Roadmap — подробный гид для изучения Python, подходящий для новичков и продвинутых разработчиков.

📌 Что внутри:

🟢 Полный список тем от основ синтаксиса до продвинутых концепций, включая ООП, асинхронность и многопоточность.
🟢 Рекомендации по библиотекам и фреймворкам.
🟢 Советы по изучению Python для веб-разработки, анализа данных, машинного обучения и DevOps.
🟢 Ссылки на полезные ресурсы и документацию.

📱 Ссылка на репозиторий

Кто хочет структурировать свое обучение Python — сохраняйте 👍


🐍 Ghostly Python | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥1
🖼️ Библиотека: PyFilesystem2

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


➡️ Ссылка на документацию

🐍 Ghostly Python | #библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🥰3
🔻 Объединение словарей в Python

Допустим, у вас есть два словаря и вы хотели бы легко объединить их в один. Для этого вы можете использовать нотацию ** для **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}


🐍 Ghostly Python | #фишки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥73
🌐 Асинхронное программирование в Python — что это, как устроено и где применяется

Большинство Python-программ работает синхронно: код выполняется последовательно, строка за строкой. Если программе нужно отправить запрос (например, к серверу погоды), она ждет ответа и лишь затем продолжает выполнение. Для небольших проектов такой подход вполне подходит, но в высоконагруженных сервисах он становится узким местом.

💬 Почему асинхронный код важен?

Асинхронный подход позволяет программе не простаивать в ожидании ответа от внешнего сервиса. Вместо этого она может выполнять другие задачи, пока запрос обрабатывается. Это особенно полезно для серверов, обрабатывающих тысячи одновременных запросов.

Так вот, подробнее об этом подходе вы узнаете из этой статьи.

📌 Что в статье?

— Объяснение основ асинхронного программирования в Python.
— Показаны примеры использования библиотек asyncio и других инструментов для написания асинхронного кода.
— Разбираются ситуации, когда асинхронность дает значительный прирост производительности.

🖥 Перейти к статье

🐍 Ghostly Python | #статьи
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
📱 Разбираемся со срезами в Python

Срезы —
это мощный инструмент в 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


Более подробно изучить тему, а также попрактиковаться на примере строк, вы можете здесь 🔜 CodeBasic

🐍 Ghostly Python | #фишки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥14🔥7👍43🥱1
Media is too big
VIEW IN TELEGRAM
📱 Реальное ЛАЙВКОДИНГ собеседование JUNIOR Python разработчик

В данном видео автор на практике покажет решение трех задач с собеседования на позицию Junior Python. А также расскажет, что нужно говорить во время собеса и что пригодится кроме умения решать задачи.

0:00 - Что вас ждет
0:45 - 1 задача (легкая)
6:43 - Определяем алгоритмическую сложность
8:58 - 2 задача (средняя)
12:44 - Момент ступора...
16:06 - 3 задача (самая сложная)
24:23 - Что нужно говорить вслух
31:48 - Что важно уметь кроме решения задач

📱 Ссылка на первоисточник

🐍 Ghostly Python | #уроки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
👩‍💻 Python Projects — отличный ресурс с более чем 70 проектами на Python для начинающих.

Там вы найдете множество идей для простых и увлекательных проектов: игры, генераторы паролей, таймеры и многое другое.

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

В общем, кому нужно больше практики — сохраняйте 👍


⛓️ Ссылка на ресурс

🐍 Ghostly Python | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥6
⚙️ Библиотека: Cerberus

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


🐱 Ссылка на GitHub

🐍 Ghostly Python | #библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍135
Всё, что нужно знать о конструкторах в Python

Как и в любом другом языке программирования, конструкторы в Python предназначены для инициализации новых объектов. Неправильное использование конструкторов может привести к различным проблемам в программе.

В этой статье, вы узнаете об этом подробнее.

🖥 Перейти к статье

🐍 Ghostly Python | #статьи
Please open Telegram to view this post
VIEW IN TELEGRAM
9