📥 Парсер CSV с валидацией и выгрузкой ошибок
📌 Что делает:
Читает CSV, проверяет валидность (email и возраст), собирает корректные строки и записывает ошибки в отдельный CSV. Используется для предобработки данных в ETL и загрузке в базу.
🛠
Встроенный модуль
Подпишись 👉🏻 @KodduuPython 🤖
import csv
INPUT_FILE = 'data.csv'
ERROR_FILE = 'errors.csv'
VALID_ROWS = []
def validate_row(row):
return row['email'].count('@') == 1 and row['age'].isdigit() and int(row['age']) > 0
with open(INPUT_FILE, newline='', encoding='utf-8') as infile, \
open(ERROR_FILE, 'w', newline='', encoding='utf-8') as errfile:
reader = csv.DictReader(infile)
writer = csv.DictWriter(errfile, fieldnames=reader.fieldnames)
writer.writeheader()
for row in reader:
if validate_row(row):
VALID_ROWS.append(row)
else:
writer.writerow(row)
print(f"✅ Обработано: {len(VALID_ROWS)} корректных строк")
print(f"⚠️ Ошибок записано в {ERROR_FILE}")
📌 Что делает:
Читает CSV, проверяет валидность (email и возраст), собирает корректные строки и записывает ошибки в отдельный CSV. Используется для предобработки данных в ETL и загрузке в базу.
🛠
Встроенный модуль
csv, ничего дополнительно не нужно.Подпишись 👉🏻 @KodduuPython 🤖
📥 Простая очередь задач с повтором и задержкой
📌 Что делает:
Запускает задачи из очереди, повторяя с задержкой при ошибках. Полезно для сетевых запросов, обработки данных, retry-механизмов.
🛠
Без зависимостей, готов к использованию в любых проектах.
Подпишись 👉🏻 @KodduuPython 🤖
import time
from collections import deque
class TaskQueue:
def __init__(self):
self.queue = deque()
def add_task(self, func, *args, retries=3, delay=2, **kwargs):
self.queue.append((func, args, kwargs, retries, delay))
def run(self):
while self.queue:
func, args, kwargs, retries, delay = self.queue.popleft()
try:
func(*args, **kwargs)
print("✅ Задача выполнена")
except Exception as e:
if retries > 0:
print(f"⚠️ Ошибка: {e}, повтор через {delay}s")
time.sleep(delay)
self.queue.append((func, args, kwargs, retries-1, delay))
else:
print(f"❌ Задача не выполнена: {e}")
# Пример
def test_task(x):
if x < 3:
raise ValueError("Слишком маленькое число")
print(f"Обработка {x}")
if __name__ == "__main__":
q = TaskQueue()
q.add_task(test_task, 1)
q.add_task(test_task, 5)
q.run()
📌 Что делает:
Запускает задачи из очереди, повторяя с задержкой при ошибках. Полезно для сетевых запросов, обработки данных, retry-механизмов.
🛠
Без зависимостей, готов к использованию в любых проектах.
Подпишись 👉🏻 @KodduuPython 🤖
❤2👍1
🔍 Быстрый поиск в JSON-файле по ключу и значению
📌 Что делает:
Ищет в JSON-массиве объекты с заданным ключом и значением. Удобно для быстрого фильтра в данных из API, экспорта и логов.
🛠
Без внешних зависимостей.
Подпишись 👉🏻 @KodduuPython 🤖
import json
def search_json(file_path, key, value):
with open(file_path, encoding='utf-8') as f:
data = json.load(f)
results = [item for item in data if item.get(key) == value]
return results
if __name__ == '__main__':
matches = search_json('data.json', 'status', 'active')
print(f"Найдено {len(matches)} элементов с status='active'")
📌 Что делает:
Ищет в JSON-массиве объекты с заданным ключом и значением. Удобно для быстрого фильтра в данных из API, экспорта и логов.
🛠
Без внешних зависимостей.
Подпишись 👉🏻 @KodduuPython 🤖
🔥2👍1
🕵️♂️ Проверка валидности email из списка
📌 Что делает:
Простая проверка списка email на базовый формат. Помогает фильтровать ввод или загружать корректные контакты.
🛠
Без зависимостей, работает на стандартной библиотеке.
Подпишись 👉🏻 @KodduuPython 🤖
import re
EMAIL_REGEX = re.compile(r'^[\w\.-]+@[\w\.-]+\.\w+$')
def validate_emails(emails):
valid = [e for e in emails if EMAIL_REGEX.match(e)]
invalid = [e for e in emails if not EMAIL_REGEX.match(e)]
return valid, invalid
if __name__ == "__main__":
sample = ["test@example.com", "bad-email@", "user@domain.org"]
valid, invalid = validate_emails(sample)
print(f"✅ Valid: {valid}")
print(f"❌ Invalid: {invalid}")
📌 Что делает:
Простая проверка списка email на базовый формат. Помогает фильтровать ввод или загружать корректные контакты.
🛠
Без зависимостей, работает на стандартной библиотеке.
Подпишись 👉🏻 @KodduuPython 🤖
👍1🔥1
⏳ Кеш с TTL (время жизни) на Python
📌 Что делает:
Простой кеш с автоматическим удалением устаревших данных по времени. Используется для оптимизации повторных запросов к БД, API и т.п.
🛠
Стандартная библиотека, готов к использованию сразу.
Подпишись 👉🏻 @KodduuPython 🤖
import time
class TTLCache:
def __init__(self, ttl_seconds):
self.ttl = ttl_seconds
self.store = {}
def set(self, key, value):
self.store[key] = (value, time.time() + self.ttl)
def get(self, key):
val, exp = self.store.get(key, (None, 0))
if time.time() < exp:
return val
self.store.pop(key, None)
return None
if __name__ == '__main__':
cache = TTLCache(5)
cache.set('foo', 'bar')
print(cache.get('foo')) # bar
time.sleep(6)
print(cache.get('foo')) # None
📌 Что делает:
Простой кеш с автоматическим удалением устаревших данных по времени. Используется для оптимизации повторных запросов к БД, API и т.п.
🛠
Стандартная библиотека, готов к использованию сразу.
Подпишись 👉🏻 @KodduuPython 🤖
🔥1
Forwarded from AIGENTTO
Рой ИИ-агентов
В системах с большим количеством пользователей имеет смысл применять эволюционный подход к автоулучшению ИИ-агентов и RAG-систем.
Самый простой вариант — создание роя ИИ-агентов/RAG-систем, выполняющих одну и ту же задачу. Агенты имеют слегка модифицированные параметры (промт, top-k, temperature и т.д.).
Затем мы случайным роутингом выбираем очередного агента для ответа. Вес тех агентов, которые получают лучший scoring, растёт, а тех, кто выдаёт плохие ответы — падает. Тем самым плохие вымирают, лучшие выживают. По сути, это A/B/C тестирование с автовыбором лучших.
Ещё раз подчеркну, это может работать только на больших выборках — когда запросов 100–1000. Если запросов десятки, то эволюция будет идти слишком медленно.
Подпишись 👉🏻 @aigentto 🤖
В системах с большим количеством пользователей имеет смысл применять эволюционный подход к автоулучшению ИИ-агентов и RAG-систем.
Самый простой вариант — создание роя ИИ-агентов/RAG-систем, выполняющих одну и ту же задачу. Агенты имеют слегка модифицированные параметры (промт, top-k, temperature и т.д.).
Затем мы случайным роутингом выбираем очередного агента для ответа. Вес тех агентов, которые получают лучший scoring, растёт, а тех, кто выдаёт плохие ответы — падает. Тем самым плохие вымирают, лучшие выживают. По сути, это A/B/C тестирование с автовыбором лучших.
Ещё раз подчеркну, это может работать только на больших выборках — когда запросов 100–1000. Если запросов десятки, то эволюция будет идти слишком медленно.
Подпишись 👉🏻 @aigentto 🤖
🔑 Генерация и проверка безопасных токенов
📌 Что делает:
Генерирует безопасный токен для API/сессий, хэширует его и позволяет проверять без хранения оригинала. Подходит для авторизации, одноразовых ключей и подтверждений.
🛠
Использует только стандартную библиотеку.
Подпишись 👉🏻 @KodduuPython 🤖
import secrets
import hashlib
def generate_token():
return secrets.token_urlsafe(32)
def hash_token(token):
return hashlib.sha256(token.encode()).hexdigest()
def check_token(token, token_hash):
return hash_token(token) == token_hash
if __name__ == "__main__":
t = generate_token()
h = hash_token(t)
print("🔐 Token:", t)
print("📦 Hash:", h)
print("✅ Проверка:", check_token(t, h))
📌 Что делает:
Генерирует безопасный токен для API/сессий, хэширует его и позволяет проверять без хранения оригинала. Подходит для авторизации, одноразовых ключей и подтверждений.
🛠
Использует только стандартную библиотеку.
Подпишись 👉🏻 @KodduuPython 🤖
👍2
📂 Автоочистка старых файлов в папке
📌 Что делает:
Удаляет файлы старше указанного числа дней в папке. Полезно для логов, временных файлов и кэшей.
🛠
Стандартная библиотека, без зависимостей.
Подпишись 👉🏻 @KodduuPython 🤖
import os, time
def clean_old_files(path, days=7):
now = time.time()
cutoff = now - days * 86400
for f in os.listdir(path):
full = os.path.join(path, f)
if os.path.isfile(full) and os.path.getmtime(full) < cutoff:
os.remove(full)
print(f"🗑 Удален: {full}")
if __name__ == "__main__":
clean_old_files("/tmp", days=3)
📌 Что делает:
Удаляет файлы старше указанного числа дней в папке. Полезно для логов, временных файлов и кэшей.
🛠
Стандартная библиотека, без зависимостей.
Подпишись 👉🏻 @KodduuPython 🤖
❤3👍1
📨 Отправка письма через Gmail (SMTP)
📌 Что делает:
Простая отправка писем через Gmail с авторизацией. Рабочий вариант для уведомлений и алертов в проде.
🛠
Без внешних зависимостей.
Для Gmail нужен [App Password](https://myaccount.google.com/apppasswords).
Подпишись 👉🏻 @KodduuPython 🤖
import smtplib
from email.mime.text import MIMEText
def send_email(to_addr, subject, body, from_addr, password):
msg = MIMEText(body, "plain", "utf-8")
msg["Subject"] = subject
msg["From"] = from_addr
msg["To"] = to_addr
with smtplib.SMTP_SSL("smtp.gmail.com", 465) as server:
server.login(from_addr, password)
server.send_message(msg)
print("✅ Письмо отправлено")
if __name__ == "__main__":
send_email(
"recipient@example.com",
"Test subject",
"Hello from Python!",
"your@gmail.com",
"app-password-here"
)
📌 Что делает:
Простая отправка писем через Gmail с авторизацией. Рабочий вариант для уведомлений и алертов в проде.
🛠
Без внешних зависимостей.
Для Gmail нужен [App Password](https://myaccount.google.com/apppasswords).
Подпишись 👉🏻 @KodduuPython 🤖
👍2
👉👉👉 Программа FullStack Developer and Data Scientist (Python+JS+Data) с 50% скидкой 🔥🔥🔥
Подпишись 👉🏻 @KodduuPython 🤖
Подпишись 👉🏻 @KodduuPython 🤖
Stepik: online education
FullStack Developer and Data Scientist (Python+JS+Data)
Этот набор курсов является специализацией для того чтобы с 0 дойти до уровня Junior FullStack Developer, плюс специализация Data Scientist для анализа данных и работы с Big Data. Программа для тех кому некогда, но очень надо выучить JavaScript, Python, Dats…
📦 Автоматическая распаковка всех архивов в папке
📌 Что делает:
Находит все
🛠
Только стандартная библиотека.
Подпишись 👉🏻 @KodduuPython 🤖
import os, zipfile
def unzip_all(path):
for f in os.listdir(path):
if f.endswith(".zip"):
full = os.path.join(path, f)
extract_to = os.path.join(path, f[:-4])
os.makedirs(extract_to, exist_ok=True)
with zipfile.ZipFile(full, "r") as zf:
zf.extractall(extract_to)
print(f"✅ Распакован: {full} → {extract_to}")
if __name__ == "__main__":
unzip_all("./archives")
📌 Что делает:
Находит все
.zip в указанной папке и автоматически распаковывает их в подпапки с тем же именем. Отлично подходит для загрузок или бэкапов.🛠
Только стандартная библиотека.
Подпишись 👉🏻 @KodduuPython 🤖
🖼️ Сжатие изображений до нужного размера (KB)
📌 Что делает:
Сжимает JPEG-картинку до целевого размера в KB, регулируя
🛠
Подпишись 👉🏻 @KodduuPython 🤖
from PIL import Image
import os
def compress_image(input_path, output_path, target_kb=200, step=5):
img = Image.open(input_path)
quality = 95
while True:
img.save(output_path, optimize=True, quality=quality)
size_kb = os.path.getsize(output_path) // 1024
if size_kb <= target_kb or quality <= step:
break
quality -= step
print(f"✅ {output_path}: {size_kb}KB (q={quality})")
if __name__ == "__main__":
compress_image("input.jpg", "output.jpg", target_kb=150)
📌 Что делает:
Сжимает JPEG-картинку до целевого размера в KB, регулируя
quality. Отлично подходит для подготовки картинок в web/prod, чтобы не грузить лишние мегабайты.🛠
pip install pillow
Подпишись 👉🏻 @KodduuPython 🤖
👉👉👉 Программа FullStack Developer and Data Scientist (Python+JS+Data) с 50% скидкой до 31 августа 🔥🔥🔥
Подпишись 👉🏻 @KodduuPython 🤖
Подпишись 👉🏻 @KodduuPython 🤖
Stepik: online education
FullStack Developer and Data Scientist (Python+JS+Data)
Этот набор курсов является специализацией для того чтобы с 0 дойти до уровня Junior FullStack Developer, плюс специализация Data Scientist для анализа данных и работы с Big Data. Программа для тех кому некогда, но очень надо выучить JavaScript, Python, Dats…
✏️ Таблица умножения как в тетрадке
Подпишись 👉🏻 @KodduuPython 🤖
from PIL import Image, ImageDraw, ImageFont
def multiplication_table(size=10, cell=60, output="table.jpg"):
img_size = (cell*(size+1), cell*(size+1))
img = Image.new("RGB", img_size, "white")
draw = ImageDraw.Draw(img)
font = ImageFont.truetype("arial.ttf", 24)
for i in range(size+1):
for j in range(size+1):
text = str(i*j) if i and j else (str(i) if j==0 else str(j))
w, h = draw.textsize(text, font=font)
x, y = j*cell + (cell-w)//2, i*cell + (cell-h)//2
draw.text((x, y), text, fill="black", font=font)
draw.rectangle([j*cell, i*cell, (j+1)*cell, (i+1)*cell], outline="gray")
img.save(output)
if __name__ == "__main__":
multiplication_table()
Подпишись 👉🏻 @KodduuPython 🤖
❤3
👉👉👉 Скидка на программу обучения продлена на день знаний - FullStack Developer and Data Scientist (Python+JS+Data) с 50% скидкой 🔥🔥🔥
Подпишись 👉🏻 @KodduuPython 🤖
Подпишись 👉🏻 @KodduuPython 🤖
Stepik: online education
FullStack Developer and Data Scientist (Python+JS+Data)
Этот набор курсов является специализацией для того чтобы с 0 дойти до уровня Junior FullStack Developer, плюс специализация Data Scientist для анализа данных и работы с Big Data. Программа для тех кому некогда, но очень надо выучить JavaScript, Python, Dats…
📱 Авто-ресайз изображений под соцсети
📌 Что делает:
Создаёт версии картинки в нужных размерах для Instagram, Telegram и VK.
🛠
Подпишись 👉🏻 @KodduuPython 🤖
from PIL import Image
SIZES = {
"instagram_post": (1080, 1080),
"instagram_story": (1080, 1920),
"telegram": (1280, 720),
"vk": (1200, 628),
}
def resize_for_social(input_path, output_dir):
img = Image.open(input_path)
for name, size in SIZES.items():
out_path = f"{output_dir}/{name}.jpg"
img_resized = img.copy()
img_resized.thumbnail(size)
img_resized.save(out_path, "JPEG", quality=90)
print(f"✅ {name}: {out_path}")
if __name__ == "__main__":
resize_for_social("input.jpg", "./out")
📌 Что делает:
Создаёт версии картинки в нужных размерах для Instagram, Telegram и VK.
🛠
pip install pillow
Подпишись 👉🏻 @KodduuPython 🤖
🔥1
🖼️ Конвертация PNG → JPEG с удалением прозрачности
📌 Что делает:
Массово конвертирует PNG-файлы в JPEG, автоматически убирая прозрачность (заменяет на белый фон).
🛠
Подпишись 👉🏻 @KodduuPython 🤖
from PIL import Image
import os
def png_to_jpg(src, dst):
img = Image.open(src).convert("RGB") # убираем альфу
img.save(dst, "JPEG", quality=90)
print(f"✅ {src} → {dst}")
if __name__ == "__main__":
for f in os.listdir("./images"):
if f.endswith(".png"):
png_to_jpg(f"./images/{f}", f"./images/{f[:-4]}.jpg")
📌 Что делает:
Массово конвертирует PNG-файлы в JPEG, автоматически убирая прозрачность (заменяет на белый фон).
🛠
pip install pillow
Подпишись 👉🏻 @KodduuPython 🤖
👍1
🌦️ Прогноз погоды на сегодня
📌 Получает текущую погоду в указанном городе через OpenWeatherMap API.
🛠
Подпишись 👉🏻 @KodduuPython 🤖
import requests
API_KEY = "your_openweathermap_api_key"
CITY = "Moscow"
URL = f"http://api.openweathermap.org/data/2.5/weather?q={CITY}&appid={API_KEY}&units=metric&lang=ru"
def get_weather():
res = requests.get(URL)
if res.status_code == 200:
data = res.json()
print(f"Погода в {CITY}: {data['weather'][0]['description'].capitalize()}, {data['main']['temp']}°C")
else:
print("Ошибка при получении данных")
if __name__ == "__main__":
get_weather()
📌 Получает текущую погоду в указанном городе через OpenWeatherMap API.
🛠
pip install requests
Подпишись 👉🏻 @KodduuPython 🤖
🔥2
📬 Авто-рассылка поздравлений с Днём рождения
📌 Отправляет простое поздравление на почту всем из списка.
🛠
Подпишись 👉🏻 @KodduuPython 🤖
import smtplib
from email.mime.text import MIMEText
BIRTHDAYS = {
"alice@example.com": "Alice",
"bob@example.com": "Bob"
}
SMTP_SERVER = "smtp.gmail.com"
SMTP_PORT = 587
EMAIL = "your_email@gmail.com"
PASSWORD = "your_password"
def send_birthday_email(to_email, name):
msg = MIMEText(f"С днём рождения, {name}! 🎉")
msg["Subject"] = "Поздравление 🎂"
msg["From"] = EMAIL
msg["To"] = to_email
with smtplib.SMTP(SMTP_SERVER, SMTP_PORT) as server:
server.starttls()
server.login(EMAIL, PASSWORD)
server.send_message(msg)
print(f"✅ Отправлено: {name}")
if __name__ == "__main__":
for email, name in BIRTHDAYS.items():
send_birthday_email(email, name)
📌 Отправляет простое поздравление на почту всем из списка.
🛠
pip install secure-smtplib
Подпишись 👉🏻 @KodduuPython 🤖
📝 Быстрое извлечение текста из PDF
📌 Извлекает и печатает текст из PDF — удобно для быстрых проверок документов.
🛠
Подпишись 👉🏻 @KodduuPython 🤖
import sys
from PyPDF2 import PdfReader
def extract_text(pdf_path):
reader = PdfReader(pdf_path)
for i, page in enumerate(reader.pages, 1):
text = page.extract_text()
print(f"--- Страница {i} ---\n{text}\n")
if __name__ == "__main__":
extract_text(sys.argv[1])
📌 Извлекает и печатает текст из PDF — удобно для быстрых проверок документов.
🛠
pip install PyPDF2
Подпишись 👉🏻 @KodduuPython 🤖
👍2
Forwarded from AIGENTTO
LLM нападет на человечество
Вокруг пугают тем, что ИИ нападет на человечество. И есть уже эксперименты, где LLM принимает аморальные решения для достижения поставленной цели.
Но как всегда слона (большую проблему) в лавке и не заметили, реальная проблема — это использование ИИ людьми для незаконных действий.
Мошенники всех мастей уже на пике технологий. Ко мне лично уже приходили аватары на Zoom-собеседование, и HR не заметил, что это не люди 😎
Принимать голосовые или видеозвонки от неизвестных в наше время — это уже достаточно высокая угроза. Текст имеет значительно меньшее влияние.
Возможен и видеозвонок от того, кого вы знаете, тогда лучше перезвонить самому.
Короче, нужно перейти на минимальное доверие ко всем видео/голосовым входящим. Сейчас уже даже сделки с недвижимостью совершаются без созвонов, чата достаточно.
Текст будет единственным валидным способом коммуникации в будущем, до тех пор, пока Elon Musk, не внедрил всем в мозг нейролинк 🧠
Подпишись 👉🏻 @aigentto 🤖
Вокруг пугают тем, что ИИ нападет на человечество. И есть уже эксперименты, где LLM принимает аморальные решения для достижения поставленной цели.
Но как всегда слона (большую проблему) в лавке и не заметили, реальная проблема — это использование ИИ людьми для незаконных действий.
Мошенники всех мастей уже на пике технологий. Ко мне лично уже приходили аватары на Zoom-собеседование, и HR не заметил, что это не люди 😎
Принимать голосовые или видеозвонки от неизвестных в наше время — это уже достаточно высокая угроза. Текст имеет значительно меньшее влияние.
Возможен и видеозвонок от того, кого вы знаете, тогда лучше перезвонить самому.
Короче, нужно перейти на минимальное доверие ко всем видео/голосовым входящим. Сейчас уже даже сделки с недвижимостью совершаются без созвонов, чата достаточно.
Текст будет единственным валидным способом коммуникации в будущем, до тех пор, пока Elon Musk, не внедрил всем в мозг нейролинк 🧠
Подпишись 👉🏻 @aigentto 🤖
Anthropic
Agentic Misalignment: How LLMs could be insider threats
New research on simulated blackmail, industrial espionage, and other misaligned behaviors in LLMs
❤2