
Атомарная запись файлов в Python: защита от повреждения
Обрыв процесса во время open(w) оставляет обрезанный файл, а полный диск — пустой. Разбираем, как записывать так, чтобы читатель всегда видел либо старую, либо целую новую версию.

Обрыв процесса во время open(w) оставляет обрезанный файл, а полный диск — пустой. Разбираем, как записывать так, чтобы читатель всегда видел либо старую, либо целую новую версию.

Строки-статусы вроде «active» и «canceled» кажутся удобными, пока опечатка не проходит все проверки и не ломает логику в проде. Разбираем, чем Enum лучше и когда он мешает.

Ручной commit и rollback в try/except расползается по коду и рано или поздно оставляет открытую транзакцию. Разбираем, как собрать надёжный контекстный менеджер и где он ломается.

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

Наивный datetime без таймзоны — источник смещений на несколько часов и дублей в отчётах. Разбираем, где именно ломается работа со временем в Python и как строить конвейер от UTC к локали.

Три способа превратить объект Python в байты и обратно. У каждого своя цена: pickle открывает дыру в безопасности, json теряет типы, msgpack требует зависимости. Разбираем, когда что.

Разбираем два способа сделать командную утилиту на Python: click с декораторами и typer на аннотациях типов. Что выигрываете и чем платите за каждый.

Как разделить настройки для dev и prod, не хранить пароли в git и не получить AttributeError на старте. Разбираем три подхода к конфигурации и цену каждого.

print() и logging.basicConfig не тянут прод: логи текстом невозможно фильтровать, ротация захлёбывается, а под многопоточностью строки перемешиваются. Разбираем, как настроить структурные логи, уровни и ротацию без сюрпризов.

CSV с датами в пяти форматах, дублями и NaN там, где ждёте ноль. Разбираем, чем чистить и валидировать данные на Python: голый pandas, Pydantic и pandera — с ценой каждого подхода.

Вы знаете Python, но ещё не работали с pandas. За час разберём загрузку данных, фильтрацию, группировку и сохранение результата — без лишней теории, только то, что нужно в реальной работе.

Файл на 8 ГБ и 40 миллионов строк, а на машине 16 ГБ памяти. pandas падает с MemoryError, чистый Python читает без проблем, но медленно. Разбираем, где ломается каждый подход и что мерить.