🐍 Python 3.15 вышел: UTF-8 по умолчанию может сломать ваши скрипты на Windows
Коллеги, важный релиз для всех, кто пишет скрипты автоматизации, интеграции и парсеры системных логов на Python.
📌 ФАКТЫ
Стабильный релиз: 9 октября представлена финальная ветка Python 3.15.
UTF-8 Mode по умолчанию (PEP 686): встроенная функция
Ленивые импорты (PEP 810): синтаксис вида
Экспериментальный JIT: прирост производительности +7–8% на архитектуре x86_64 под Linux.
Сэмплирующий профилировщик Tachyon: низкоуровневый профилировщик без остановки рантайма. Умеет аттачиться к уже запущенному production-процессу и строить flame graph узких мест.
Новые базовые типы: добавлены нативные
⚠️ ГДЕ ВЫСТРЕЛИТ НА WINDOWS
Исторически на русскоязычных Windows-серверах и рабочих станциях
После обновления интерпретатора до 3.15:
Выгрузки отчетов, реестров и прайсов из 1С:Предприятия;
Экспортированные CSV-таблицы из классического Excel;
Текстовые журналы старых служб, конфиги и
при попытке прочитать их «по старинке» (
🛠 КАК ПРАВИЛЬНО ОБРАБАТЫВАТЬ КОДИРОВКИ
1. Явная фиксация кодировки в Python
Python
2. Временный откат поведения через переменные окружения
PowerShell
3. Экспресс-аудит репозитория скриптов перед обновлением Python
Bash
💡 В ЧЁМ СУТЬ
#skills #python #automation #windows #1c #linux #devops #sysadmin #admin_future
Коллеги, важный релиз для всех, кто пишет скрипты автоматизации, интеграции и парсеры системных логов на Python.
📌 ФАКТЫ
Стабильный релиз: 9 октября представлена финальная ветка Python 3.15.
UTF-8 Mode по умолчанию (PEP 686): встроенная функция
open() без явного параметра encoding теперь всегда открывает файлы в кодировке UTF-8, игнорируя региональные параметры операционной системы (locale.getencoding()).Ленивые импорты (PEP 810): синтаксис вида
lazy import json — модуль парсится и загружается в память только при первом фактическом вызове атрибута (включается строго явно флагом или директивой). Существенно срезает время холодного старта CLI-утилит.Экспериментальный JIT: прирост производительности +7–8% на архитектуре x86_64 под Linux.
Сэмплирующий профилировщик Tachyon: низкоуровневый профилировщик без остановки рантайма. Умеет аттачиться к уже запущенному production-процессу и строить flame graph узких мест.
Новые базовые типы: добавлены нативные
frozendict (неизменяемый словарь) и sentinel (удобные уникальные маркеры-заглушки вместо object()).⚠️ ГДЕ ВЫСТРЕЛИТ НА WINDOWS
Исторически на русскоязычных Windows-серверах и рабочих станциях
open() по умолчанию поднимал кодировку CP1251 (ANSI) для файлов и CP866 (OEM) для консольных утилит.После обновления интерпретатора до 3.15:
Выгрузки отчетов, реестров и прайсов из 1С:Предприятия;
Экспортированные CSV-таблицы из классического Excel;
Текстовые журналы старых служб, конфиги и
.bat/.cmd скрипты в кодировке ANSIпри попытке прочитать их «по старинке» (
open('file.txt')) мгновенно уронят процесс с ошибкой UnicodeDecodeError: 'utf-8' codec can't decode byte... либо тихо запишут кракозябры при сохранении.🛠 КАК ПРАВИЛЬНО ОБРАБАТЫВАТЬ КОДИРОВКИ
1. Явная фиксация кодировки в Python
Python
# Чтение локальных Windows-выгрузок (1С, Excel, старые сервисы)
with open('export_1c.csv', mode='r', encoding='cp1251') as f:
data = f.read()
# Корректный перехват stdout системных CLI-команд Windows (ipconfig, ping, netstat)
import subprocess
res = subprocess.run(
['ipconfig', '/all'],
capture_output=True,
encoding='cp866',
check=True
)
print(res.stdout)
2. Временный откат поведения через переменные окружения
PowerShell
# Принудительное отключение UTF-8 режима для конкретного сеанса PowerShell
$env:PYTHONUTF8 = '0'
python automation_script.py
3. Экспресс-аудит репозитория скриптов перед обновлением Python
Bash
# Ищем потенциально опасные вызовы open() без аргумента encoding в проекте
grep -rnE "open\([^)]*\)" --include="*.py" . | grep -v "encoding="
💡 В ЧЁМ СУТЬ
Явный параметр
encoding=в каждом вызове
open()— базовый стандарт инженерной гигиены, делающий скрипт полностью переносимым между Windows Server, Debian/Ubuntu и любыми версиями рантайма.
Перед тем как обновлять глобальный Python на серверах автоматизации или в контейнерах сборщиков, прогоните аудит кода регуляркой выше.
#skills #python #automation #windows #1c #linux #devops #sysadmin #admin_future