Блог Python Arena
Туториалы по Python
Основы Python
2 статьиPython скрипт закрывается сразу после запуска: что делать
Консольное окно принадлежит процессу: скрипт завершился — окно исчезло вместе с traceback. Разбираем, почему так устроено, как запустить файл из cmd и PowerShell, зачем нужен лаунчер py и как сохранить вывод и ошибку в файл. Отдельно — случай, когда ошибки не было вовсе, а окно всё равно закрылось.
Python ошибка отступов: табы и пробелы в одном файле
TabError появляется, когда в одном блоке кода отступы набраны и табами, и пробелами. На экране такие отступы выглядят одинаково, поэтому глазами ошибку не найти. Разбираем, как включить показ невидимых символов, перевести файл на пробелы одной командой и настроить редактор, чтобы ошибка не вернулась.
Строки и форматирование
2 статьиValueError: could not convert string to float в Python
Ошибка could not convert string to float почти всегда означает одно: в float() попала строка с десятичной запятой вроде 77,59. Разбираем запятую, пустую строку, невидимый BOM из Excel и неразрывный пробел в разрядах — и собираем парсер цен, который не падает на грязных данных.
Убрать расширение файла из строки в Python: 4 способа
rstrip('.txt') не убирает расширение: он грызёт набор символов, и report.txt тихо превращается в repor. Разбираем механику этого бага и четыре правильных способа — removesuffix, os.path.splitext, Path.stem и срез. Отдельно: archive.tar.gz, .gitignore и файлы вообще без расширения.
Списки и срезы
2 статьиlist indices must be integers: ошибка Python и JSON
Ошибка TypeError: list indices must be integers or slices, not str значит, что к списку обратились по строковому ключу. Почти всегда виноват JSON: разбор вернул список словарей, и вместо data['name'] нужно data[0]['name']. Разбираем диагностику за одну строку, зеркальную ошибку string indices и разницу с KeyError и IndexError.
Python: удаление из списка в цикле пропускает элементы
Цикл for идёт по списку внутренним индексом, а remove() и del сдвигают хвост влево — поэтому после каждого удаления один элемент проскакивает мимо проверки. Исключения нет, список молча возвращается наполовину отфильтрованным. Разбираем механику по шагам и три способа отфильтровать список правильно.
Циклы и итерации
1 статьяОшибки и исключения
1 статьяФайлы и данные
2 статьиPython кракозябры при чтении файла: cp1251 и UTF-8
Кракозябры вместо русских букв и падение с UnicodeDecodeError — это один и тот же баг: Python предположил не ту кодировку. Разбираем, почему у open() нет фиксированной кодировки по умолчанию, как прочитать сообщение об ошибке до конца и чем utf-8-sig отличается от utf-8. Все примеры запускаются как есть.
Python JSON: русские буквы вместо текста коды
В json-файле вместо «кофе» лежит \u043a\u043e\u0444\u0435, и это не поломка, а поведение json.dump по умолчанию. Разбираем, за что отвечает ensure_ascii, за что encoding в open, и почему нужны обе настройки сразу.