en
Feedback
Python для начинающих

Python для начинающих

Open in Telegram

Python для начинающих

Show more
1 240
Subscribers
+124 hours
+37 days
+230 days
Posts Archive
Как создавать и использовать промежуточные слои в Flask
Как создавать и использовать промежуточные слои в Flask

Привет, это Иван! Сегодня поговорим о полезном инструменте для любого начинающего питониста — модуле psutil. Если ты когда-нибудь хотел узнать, сколько “ест” памяти твоя программа, сколько у тебя свободного места на диске или какой у тебя загруженный процессор, psutil поможет всё это выяснить за пару строк кода. psutil (process and system utilities) — универсальный модуль для мониторинга состояния системы. Он работает на Windows, Linux и даже на Mac, а API у него простой и интуитивный. ### Проверяем загрузку CPU Начнём с самого интересного — сколько же процентов CPU сейчас используется?
import psutil

cpu_percent = psutil.cpu_percent(interval=1)
print(f"Current CPU load: {cpu_percent}%")
Всё просто: cpu_percent() анализирует загрузку процессора. Если поставить interval=1, функция замеряет занятость CPU за одну секунду. ### Смотрим на память Хотите выяснить, сколько оперативки свободно? Легко:
import psutil

memory = psutil.virtual_memory()
print(f"Total: {memory.total // (1024**2)} MB")
print(f"Available: {memory.available // (1024**2)} MB")
print(f"Used: {memory.used // (1024**2)} MB")
В результате ты видишь всю статистику по оперативной памяти, причём удобно в мегабайтах. ### Местоположение под контроль: мониторим пространство на диске Нужно узнать, сколько осталось свободного места на диске C? Вот вам пример:
import psutil

disk = psutil.disk_usage('C:\\')
print(f"Total: {disk.total // (1024**3)} GB")
print(f"Free: {disk.free // (1024**3)} GB")
Подставляйте свой путь для Linux или MacOS — будет также работать. ### Выводим процессы — что там работает? Ещё одна фишка psutil — просмотр процессов:
import psutil

for proc in psutil.process_iter(['pid', 'name', 'username']):
    print(proc.info)
Скрипт покажет PID, имя процесса и его владельца для каждого рабочего приложения. --- psutil — это мгновенный способ получить максимум информации о вашей системе и процессе выполнения вашего Python-кода. Этот модуль часто используют для создания системных мониторов или оптимизации работы программ. Советую попробовать провести “экскурсию” по системе с помощью psutil — и удивиться, сколько полезного можно узнать за пару строк!

Работа с мониторингом системы с помощью модуля psutil
Работа с мониторингом системы с помощью модуля psutil

Привет! Я Иван, и сегодня мы с тобой шагнем в загадочный мир работы с электронной почтой из Python – научимся подключаться к POP3-серверам! Почему это важно? Иногда автоматическая обработка почты нужна для создания ботов, триггеров или просто творческих проектов. POP3 – это популярный протокол, позволяющий "забирать" письма с серверов электронной почты. Для работы с ним есть стандартный модуль poplib. Давай разберём его на практике. ### 1. Установка соединения
import poplib

server = poplib.POP3_SSL('pop.gmail.com', 995)
server.user('your_email@gmail.com')
server.pass_('your_app_password')
В современных почтовиках, например Gmail, потребуется пароль приложения (генерируется в настройках безопасности). ### 2. Получаем список писем
num_messages = len(server.list()[1])
print(f'You have {num_messages} messages.')
server.list() возвращает список всех писем в почтовом ящике. ### 3. Читаем первое письмо
resp, lines, octets = server.retr(1)  # 1 — это номер письма
message_content = b'\n'.join(lines).decode('utf-8')
print(message_content)
retr(n) берёт письмо по номеру. Письмо возвращается в виде списка байтовых строк (lines), которые мы соединяем и декодируем. ### 4. Завершаем сессию
server.quit()
--- В реальных задачах удобно обрабатывать письма не по номерам, а в цикле, или искать определённые заголовки. Также для красивого разбора структуры письма пригодятся модули email и re – но об этом уже в другой раз. Совет: Проверяй настройки безопасности почтового ящика! Иногда нужно разрешить подключение со сторонних приложений. Работа с POP3 – открывает путь к автоматизации и аналитике писем (например, уведомлений о заказах или сообщений от пользователей). Удачного кодинга и до скорых встреч!

Подключение к POP3 серверам для обработки электронной почты
Подключение к POP3 серверам для обработки электронной почты

Привет! На связи Иван, и сегодня я расскажу, как добавить немного цветов в вашу консоль с помощью Python и модуля colorama. Если вы устали от скучного черно-белого вывода, держитесь — сейчас будет ярко! ## Почему вообще нужен цвет в терминале? Отвечу просто: цвет помогает быстрее ориентироваться в выводе. Особенно, если ваш скрипт что-то сообщает пользователю или вы регулярно гоняете тесты. Красное — ошибка, желтое — предупреждение, зеленое — успех. Появляется ясность, стиль и чуть-чуть магии. ## Знакомимся с colorama Модуль colorama отлично работает и на Windows, и на Unix-подобных системах. Установить его можно так:
pip install colorama
Подключаем:
from colorama import init, Fore, Back, Style
init()
init() — это стандартная команда, чтобы цвета корректно работали в Windows. ## Пример 1: Цветной текст Всё просто:
from colorama import Fore, Style, init
init()

print(Fore.RED + 'Error: Invalid input!')
print(Fore.GREEN + 'Success: Operation completed.')
print(Style.RESET_ALL + 'Back to default color.')
Как видно, Fore отвечает за цвет текста. Всё просто и понятно. ## Пример 2: Цветной фон и эффекты Добавим цветной фон и немного форматирования:
from colorama import Fore, Back, Style, init
init()

print(Fore.YELLOW + Back.BLUE + 'Warning: Low memory!')
print(Style.BRIGHT + 'This text is bold!')
print(Style.RESET_ALL + 'Default style and color.')
Здесь Back — фон, а Style.BRIGHT делает текст более ярким. Не забываем сбрасывать стиль с Style.RESET_ALL, чтобы дальше вывод был обычным. ## Пример 3: Цвета в строках Если нужно использовать цвета внутри составной строки:
from colorama import Fore, Style, init
init()

user = 'Alice'
print(f'{Fore.CYAN}Hello, {user}!{Style.RESET_ALL}')
Цвет работает и в f-строках, что очень удобно. ## Итоги colorama позволяет буквально за пару строк сделать консольный вывод современнее и нагляднее. Здесь нет хитрых настроек, всё интуитивно: Fore — цвет текста, Back — фон, Style — стиль. Хочется выделять информацию? Применяйте colorama и управляйте вниманием пользователей! До новых ярких идей! — Иван

Использование цвета в терминале с модулем colorama
Использование цвета в терминале с модулем colorama

Привет! На связи Иван, и сегодня мы поговорим о том, как запускать и управлять внешними процессами в Python с помощью модуля subprocess. Казалось бы, зачем это нужно? А вот представьте, что вашему скрипту нужно запустить внешний инструмент, обработать его вывод, или даже — автоматизировать какую-то рутинку в системе. Тут и приходит на помощь этот мощный модуль! ### Быстрый старт: subprocess.run Один из самых простых способов что-то запустить — воспользоваться функцией subprocess.run. Например, откроем и узнаем содержимое текущей папки:
import subprocess

result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
print(result.stdout)
Здесь мы передаем список аргументов команды (имя команды и параметры) и получаем результат её выполнения. С выходом Python 3.5 использовать capture_output стало невероятно удобно: весь вывод команды оказывается у вас под рукой. ### Повышаем сложность: захватываем ошибки Иногда команды ведут себя неидеально — возвращают ошибки. Посмотрим, как их поймать:
process = subprocess.run(['ls', '/nonexistent_folder'], capture_output=True, text=True)
if process.returncode != 0:
    print(f"Error: {process.stderr}")
Благодаря returncode и stderr, можно легко понять, что пошло не так. ### Взаимодействие с процессом: subprocess.Popen Когда нужен больший контроль — например, нужно читать вывод по мере поступления или отправлять данные на вход процесса — пригодится subprocess.Popen. Пример: читаем вывод строчка за строчкой в реальном времени.
with subprocess.Popen(['ping', '-c', '3', 'google.com'], stdout=subprocess.PIPE, text=True) as proc:
    for line in proc.stdout:
        print(line.strip())
Здесь мы "слушаем" вывод команды ping, не дожидаясь полного завершения. ### Передаем данные процессу Если нужно взаимодействовать через stdin — элементарно! Например, отправим текст на вход команде grep:
process = subprocess.run(['grep', 'Python'], input='Python is awesome!\nHello World!', text=True, capture_output=True)
print(process.stdout)
Вы увидите только строки, где встречается "Python". ### Итог subprocess — настоящий швейцарский нож для управления внешними процессами на Python. Им можно и просто запускать скрипты, и строить вот такие мини-системы автоматизации с интерактивным взаимодействием. До встречи — буду рад поделиться и другими трюками языка Python!

Как запускать и управлять процессами с помощью subprocess
Как запускать и управлять процессами с помощью subprocess

Привет! Я Иван, и сегодня мы разгадаем классическую загадку каждого, кто хочет поделиться своим Python-кодом с миром: зачем нужен файл setup.py и как его создать? Если вы мечтаете сделать свой модуль частью Pypi, или хотя бы перекатывать свои библиотеки между проектами, эта информация станет для вас ключевой. ## Зачем нужен setup.py? setup.py — это сердце любого Python-пакета. Именно этот файл позволяет устанавливать ваш проект через pip, автоматически подключать зависимости и "рассказывает" системе, как обращаться с вашим кодом. Без него — никакой штатной установки, простого экспорта и удобного распространения. ## Основная структура Минимальный setup.py выглядит буквально как заклинание:
from setuptools import setup

setup(
    name="hello_world_package",
    version="0.1",
    packages=["hello_world"],  # имя директории с модулем
)
Здесь setuptools — это библиотека, без которой современное создание пакетов не обходится. А параметры — прямое описание вашего пакета. ## Добавим подробностей Давайте сделаем setup.py чуть более осмысленным:
from setuptools import setup, find_packages

setup(
    name="my_cool_lib",
    version="1.0.0",
    description="A cool library that says hello",
    author="Ivan",
    author_email="ivan@example.com",
    packages=find_packages(),
    install_requires=[
        "requests>=2.0"
    ],
    entry_points={
        "console_scripts": [
            "say-hello = my_cool_lib.hello:main"
        ]
    }
)
Поясню ключевые моменты: - install_requires — список зависимостей, которые будут автоматически установлены при инсталляции вашего пакета. - entry_points позволяет создавать консольные команды. После установки вашего пакета пользователь сможет запустить say-hello прямо из терминала! - find_packages() сам найдет все подпакеты в вашей директории. ## Минимальный набор файлов Типичная структура простого пакета такова:
my_cool_lib/
    __init__.py
    hello.py
setup.py
README.md
Помещайте исходный код в отдельную директорию, не на одном уровне с setup.py — так вы избежите многих проблем в будущем. ## Итоги Создание setup.py — это шаг к профессиональной разработке. Даже если вы пока не планируете выкладывать свой код в открытый доступ, формирование пакета с setup.py улучшит структуру ваших проектов. Я, Иван, советую не откладывать знакомство с этим файлом: структурные привычки закладываются с первых строчек кода!

Изучение структуры проектов: создание setup.py для пакетов
Изучение структуры проектов: создание setup.py для пакетов

Изучение структуры проектов: создание setup.py для пакетов
Изучение структуры проектов: создание setup.py для пакетов

Привет! С вами Иван, и сегодня мы поговорим о создании простых web-серверов на Python с модулем http.server. Это настоящий магический ящик для новичка: буквально в пару строк кода Python превращается в миниатюрный web-сервер. ## Первый шаг: поднимаем сервер за минуту Если у вас установлен Python 3 (а иначе зачем вы тут?), достаточно одной команды в терминале:
python -m http.server 8000
Теперь любой браузер может открыть http://localhost:8000, чтобы увидеть содержимое вашей текущей папки. Вот так просто вы уже раздаёте файлы через HTTP! ## Немного кода — пишем свой сервер Но как же написать сервер вручную и добавить, например, свою страничку? Для этого используем класс HTTPServer и обработчик запросов BaseHTTPRequestHandler.
from http.server import HTTPServer, BaseHTTPRequestHandler

class MyHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        self.wfile.write(b"<h1>Hello, Python Web!</h1>")

server = HTTPServer(('localhost', 8080), MyHandler)
print("Starting server at http://localhost:8080")
server.serve_forever()
Теперь, заходя на http://localhost:8080, вы увидите свою HTML-страничку с приветствием. ## Немного магии: отдаём разные страницы Хотите разные ответы по разным адресам? Сделайте так:
class MyHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        if self.path == '/':
            message = "<h1>Home page</h1>"
        elif self.path == '/about':
            message = "<h1>About page</h1>"
        else:
            self.send_response(404)
            self.end_headers()
            self.wfile.write(b"Not found")
            return
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        self.wfile.write(message.encode())
Теперь странички / и /about будут разными, а всё остальное выдаёт 404. ## Зачем всё это нужно? http.server — идеальный инструмент для обучения, тестов или быстрой раздачи файлов. Если нужна "взрослая" разработка — смотрите в сторону Flask или FastAPI. Но иногда и простой сервер — всё, что нужно! На этом всё! Пусть код будет с вами, а сервер — быстрым и надёжным.

Создание простых web-серверов с помощью HTTPServer
Создание простых web-серверов с помощью HTTPServer

Привет! С вами Иван — и сегодня я расскажу, как с помощью Python и стандартного модуля sched решать задачи, которые должны выполняться периодически. Даже если вы только начинаете изучать язык, этот инструмент может значительно облегчить вашу жизнь. Вы наверняка сталкивались с ситуациями, когда нужно что-то делать через определённые интервалы времени: например, проверять обновления на сайте, делать резервные копии или отправлять уведомления. Обычно на помощь приходит time.sleep или даже многопоточность, но в Python уже есть гораздо более тонкое и приятное средство — модуль sched. ## В чём суть sched? Модуль sched реализует планировщик событий. Вы создаёте объект планировщика, добавляете в него задачи, указываете время запуска — и планировщик сам их аккуратно "отпускает в бой". Вот базовый пример:
import sched
import time

def print_message(name):
    print(f"Hello, {name}! The time is {time.ctime()}")

scheduler = sched.scheduler(time.time, time.sleep)
scheduler.enter(3, 1, print_message, argument=("Ivan",))
scheduler.enter(6, 1, print_message, argument=("Pythonista",))
scheduler.run()
Этот код выведет приветствие сначала через 3 секунды, затем через 6 секунд от запуска. Всё просто: enter — добавить задачу через указанное время, run — начать выполнение. ## Как сделать периодическую задачу? Секрет тут в самой функции-обработчике: она добавляет себя обратно в планировщик. Пример создания "бесконечного повторения" раз в 5 секунд:
import sched
import time

def periodic_task(scheduler, interval):
    print(f"Periodic task runs at {time.ctime()}")
    scheduler.enter(interval, 1, periodic_task, (scheduler, interval))

scheduler = sched.scheduler(time.time, time.sleep)
scheduler.enter(0, 1, periodic_task, (scheduler, 5))
scheduler.run()
Функция periodic_task при каждом вызове снова добавляет себя в расписание через 5 секунд — и так до бесконечности (или пока не остановите программу). ## Особенности и когда использовать sched отлично подходит для простых задач планирования в одном потоке. Если у вас десятки тысяч событий или критична высокая точность — лучше смотрите в сторону более продвинутых библиотек (например, APScheduler или Celery). Но для домашних проектов и скриптов эта маленькая "швейцарская армия" планирования будет как нельзя кстати. Подытожим: модуль sched — это минималистичный, но удобный планировщик для несложных задач во времени. А если хочется почувствовать себя дирижёром событий — стоит попробовать! На связи был Иван. Экспериментируйте с Python — он полон приятных сюрпризов!

Как использовать Python для периодических задач с помощью модуля sched
Как использовать Python для периодических задач с помощью модуля sched

Привет! С вами Иван, и сегодня поговорим о работе с файловой системой на Python. Если вы думаете, что модуль os — это скучный рудимент из древних Python-эпох, то вы сильно заблуждаетесь. Этот модуль — настоящая швейцарская армия программиста: он позволяет шастать по директориям, искать, удалять, переименовывать и создавать файлы, словно вы — повелитель вашей файловой империи. Давайте нырнем в эту тему вместе. Начнем с главного — исследования текущей директории:
import os

# Получаем текущую рабочую директорию
current_dir = os.getcwd()
print(f"Current working directory: {current_dir}")
Теперь пробежимся по файлам и папкам:
for item in os.listdir(current_dir):
    item_path = os.path.join(current_dir, item)
    if os.path.isfile(item_path):
        print(f"File: {item}")
    elif os.path.isdir(item_path):
        print(f"Directory: {item}")
Элементарно, Ватсон? А вот теперь интереснее. Допустим, вам нужно найти все файлы с расширением .txt в какой-нибудь глубокой-длинной папке. Для этого отлично подходит os.walk:
search_root = "/path/to/search"

for root, dirs, files in os.walk(search_root):
    for file in files:
        if file.endswith(".txt"):
            print(f"Found: {os.path.join(root, file)}")
os.walk рекурсивно обходит все директории, будто у него бесконечные силы. Отличный инструмент для файловой разведки. А как насчет создания и удаления директорий?
new_dir = os.path.join(current_dir, "new_folder")

if not os.path.exists(new_dir):
    os.mkdir(new_dir)
    print(f"Created directory: {new_dir}")
else:
    print(f"Directory already exists: {new_dir}")

# Удаление
os.rmdir(new_dir)
print(f"Deleted directory: {new_dir}")
Важно: os.rmdir удалит папку только если она пустая. Если внутри что-то есть — получите ошибку. Для сложных случаев уже нужен модуль shutil, но об этом — в другой раз. И на десерт — переименование файла:
old_name = os.path.join(current_dir, "old_file.txt")
new_name = os.path.join(current_dir, "new_file.txt")

if os.path.exists(old_name):
    os.rename(old_name, new_name)
    print(f"Renamed to: {new_name}")
Всё просто: немного условий, и вы уже управляете файлами как администратор чужого сервера. Да, модуль os выглядит скромно, но за его простым интерфейсом скрываются мощные возможности. Умея пользоваться im, вы сможете автоматизировать многое: от сортировки загрузок до сканирования большого дерева проектов — всё в пределах нескольких строк. Пишите Python-скрипты, которые делают рутину за вас. И пусть файловая система подчинится вам!

Работа с файловой системой: поиск и управление файлами с help модуля os
Работа с файловой системой: поиск и управление файлами с help модуля os

📁 CSV-файлы и модуль csv: удобный вход в мир данных на Python Привет! С вами Иван — и сегодня мы поговорим о том, как Python помогает обращаться с CSV-файлами с лёгкостью и грацией библиотекаря, разбирающего карточный каталог. CSV — это табличные данные в виде обычного текста, разделённого запятыми (Comma-Separated Values). Это один из самых популярных и доступных форматов обмена данными между сервисами, программами и людьми. Работаешь с Excel? Экспортируешь из Google Sheets? Загружаешь выгрузку из CRM? Почти наверняка — это CSV. В Python для работы с такими файлами есть мощный встроенный модуль — csv. Он не требует отдельной установки и готов к работе сразу после установки Python. Давайте взглянем, как с ним подружиться. 📦 Чтение CSV-файлов Начнём с базы. Предположим, у нас есть файл data.csv:
name,age,city
Alice,30,New York
Bob,25,London
Charlie,35,Berlin
Прочитаем его, используя csv.reader:
import csv

with open('data.csv', newline='') as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        print(row)
Вывод:
['name', 'age', 'city']
['Alice', '30', 'New York']
['Bob', '25', 'London']
['Charlie', '35', 'Berlin']
Каждая строка CSV превращается в список строк. Просто и удобно! Но чаще хочется работать с данными по ключам, а не по индексам. На помощь приходит csv.DictReader:
import csv

with open('data.csv', newline='') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        print(row['name'], 'from', row['city'])
Вывод:
Alice from New York
Bob from London
Charlie from Berlin
Такой способ уже больше похож на работу с JSON или базой данных. 📝 Запись CSV-файлов Допустим, теперь ты хочешь сохранить обработанные данные. Для этого используется csv.writer:
import csv

data = [
    ['product', 'price'],
    ['laptop', '1200'],
    ['phone', '800'],
    ['tablet', '500']
]

with open('products.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerows(data)
Или, с заголовками и словарями:
import csv

data = [
    {'product': 'laptop', 'price': 1200},
    {'product': 'phone', 'price': 800},
    {'product': 'tablet', 'price': 500},
]

with open('products_dict.csv', 'w', newline='') as csvfile:
    fieldnames = ['product', 'price']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    writer.writeheader()
    for item in data:
        writer.writerow(item)
Оба способа сохранят таблицу в читаемом виде, которую можно открыть даже в Excel. 🔧 Немного тонкостей - Модуль csv справляется не только с запятыми — можно задать любой разделитель через параметр delimiter. - Не забудь про newline='' при открытии файла — это нужно для правильной работы на Windows. - Если ты хочешь обрабатывать большой файл построчно — модуль csv делает это достаточно эффективно, не загружая весь файл в память. 🎁 Вывод csv — один из тех модулей Python, про который можно забыть… а потом снова открыть, порадоваться, и не думать о ручном разборе текста. Он удобен, предсказуем и отличный старт для тех, кто только начинает работать с данными. Дальше будет интереснее — впереди pandas, но csv — отличный первый шаг. До связи, Иван.

Обработка файлов CSV с использованием модуля csv
Обработка файлов CSV с использованием модуля csv