TGViewer
Python Заметки Python Заметки @pythonotes · 2.2K subscribers
Post #119 652
Так что же такое этот Magic Number?
Это набор байтов, уникальный для определённого типа файла. Он еще называется Сигнатура файла.

Не каждый файл имеет магическое число, например текстовые файлы в них не нуждаются.

По этому набору битов можно точно определить какого типа бинарный файл открыт. Если программе очень важно не перепутать тип файла, то она будет определять его именно по сигнатуре, а не по имени файла.

В Python для скомпилированных PYС-файлов магическое число отличается от версии к версии. По нему можно определить версию интерпретатора, которым скомпилирован этот байт-код.

Пример библиотеки для определения версии

Получить magic number текущей версии можно так:

Python 3
>>> from importlib import util
>>> util.MAGIC_NUMBER.hex()

Python 2
>>> import imp
>>> imp.get_magic().encode('hex')

Интерпретатор использует это значение для проверки PYC-файлов перед импортом.
Если версия не подходящая вы увидете ошибку:

RuntimeError: Bad magic number in .pyc file

То есть, помимо типа файла, магическое число может также обозначать разные версии одного типа.

Итого, сигнатура файла помогает:

🔸 быстро определить формат файла вне зависимости от имени (например для запуска соответствующего приложения в OS)
🔸 обозначать совместимость одного и того же бинарного формата с разными версиями софта (пошло из Unix систем)
🔸 разделить бинарники программ по вариантам сборки
🔸 восстанавливать файлы при потере таблицы файлов диска
🔸 использовать быстрый поиск файлов по типу без обращения к таблице файлов
🔸 получить типа файла, передаваемого по сети, не качая его целиком

Список этим, конечно же, не ограничивается.

#libs #tricks
More from @pythonotes
  1. Sep 21, 2026­ WebAssembly это мощная технология позволяющая загружать практически любое приложение в б…
  2. Aug 17, 2026Не так давно столкнулся с API который в ответе с ошибкой присылал только статус-код. Без п…
  3. Jul 20, 2026У меня основная ОС это Linux. Но нередко требуется делать сборку клиента под Windows. Соби…
  4. Jul 13, 2026В прошлый раз был пример с понижением привелегий процесса. Проблема в том, что обратно под…
  5. Jul 6, 2026Модуль pwd может использоваться для считывания информации о пользователях из базы данных п…
  6. Jun 22, 2026Недавно я реализовал Multi Tenancy систему на FastAPI + SQLAlchemy и пересобрал её в небол…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →