새소식

Programming/python

[python] magic number

  • -

기록용으로 남깁니다.

파이썬이 실행되어 생성되는 *.pyc 파일에는 사용된 파이썬 버전 정보가 파일 맨 처음 4바이트에 저장되어 있습니다.
보통은 bad magic number 등의 문제가 생기면 *.pyc 파일을 지우고 재생성하면 되는데 그렇지 못한 상황을 위해 기록으로 남깁니다.
문제가 되는 pyc 파일의 첫 4바이트를 little endian 으로 직접 읽어서 확인하셔도 되고, 정상적으로 접근 가능한 환경이 있는 경우에는 코드로 확인하셔도 됩니다.

# python 2.x 대
import imp
imp.get_magic().encode('hex')
'd1f20d0a'

# python 3.x 대
import importlib
importlib.util.MAGIC_NUMBER.hex()
'420d0d0a'
 0x02099900	python 1.0 byte-compiled
 0x03099900	python 1.1/1.2 byte-compiled
 0x892e0d0a	python 1.3 byte-compiled
 0x04170d0a	python 1.4 byte-compiled
 0x994e0d0a	python 1.5 byte-compiled
 0xfcc40d0a	python 1.6 byte-compiled
 0xfdc40d0a	python 1.6 byte-compiled
 0x87c60d0a	python 2.0 byte-compiled
 0x88c60d0a	python 2.0 byte-compiled
 0x2aeb0d0a	python 2.1 byte-compiled
 0x2beb0d0a	python 2.1 byte-compiled
 0x2ded0d0a	python 2.2 byte-compiled
 0x2eed0d0a	python 2.2 byte-compiled
 0x3bf20d0a	python 2.3 byte-compiled
 0x3cf20d0a	python 2.3 byte-compiled
 0x45f20d0a	python 2.3 byte-compiled
 0x59f20d0a	python 2.4 byte-compiled
 0x63f20d0a	python 2.4 byte-compiled
 0x6df20d0a	python 2.4 byte-compiled
 0x6ef20d0a	python 2.4 byte-compiled
 0x77f20d0a	python 2.5 byte-compiled
 0x81f20d0a	python 2.5 byte-compiled
 0x8bf20d0a	python 2.5 byte-compiled
 0x8cf20d0a	python 2.5 byte-compiled
 0x95f20d0a	python 2.5 byte-compiled
 0x9ff20d0a	python 2.5 byte-compiled
 0xa9f20d0a	python 2.5 byte-compiled
 0xb3f20d0a	python 2.5 byte-compiled
 0xb4f20d0a	python 2.5 byte-compiled
 0xc7f20d0a	python 2.6 byte-compiled
 0xd1f20d0a	python 2.6 byte-compiled
 0xd2f20d0a	python 2.6 byte-compiled
 0xdbf20d0a	python 2.7 byte-compiled
 0xe5f20d0a	python 2.7 byte-compiled
 0xeff20d0a	python 2.7 byte-compiled
 0xf9f20d0a	python 2.7 byte-compiled
 0x03f30d0a	python 2.7 byte-compiled
 0x04f30d0a	python 2.7 byte-compiled
 0xb80b0d0a	python 3.0 byte-compiled
 0xc20b0d0a	python 3.0 byte-compiled
 0xcc0b0d0a	python 3.0 byte-compiled
 0xd60b0d0a	python 3.0 byte-compiled
 0xe00b0d0a	python 3.0 byte-compiled
 0xea0b0d0a	python 3.0 byte-compiled
 0xf40b0d0a	python 3.0 byte-compiled
 0xf50b0d0a	python 3.0 byte-compiled
 0xff0b0d0a	python 3.0 byte-compiled
 0x090c0d0a	python 3.0 byte-compiled
 0x130c0d0a	python 3.0 byte-compiled
 0x1d0c0d0a	python 3.0 byte-compiled
 0x1f0c0d0a	python 3.0 byte-compiled
 0x270c0d0a	python 3.0 byte-compiled
 0x3b0c0d0a	python 3.0 byte-compiled
 0x450c0d0a	python 3.1 byte-compiled
 0x4f0c0d0a	python 3.1 byte-compiled
 0x580c0d0a	python 3.2 byte-compiled
 0x620c0d0a	python 3.2 byte-compiled
 0x6c0c0d0a	python 3.2 byte-compiled
 0x760c0d0a	python 3.3 byte-compiled
 0x800c0d0a	python 3.3 byte-compiled
 0x8a0c0d0a	python 3.3 byte-compiled
 0x940c0d0a	python 3.3 byte-compiled
 0x9e0c0d0a	python 3.3 byte-compiled
 0xb20c0d0a	python 3.4 byte-compiled
 0xbc0c0d0a	python 3.4 byte-compiled
 0xc60c0d0a	python 3.4 byte-compiled
 0xd00c0d0a	python 3.4 byte-compiled
 0xda0c0d0a	python 3.4 byte-compiled
 0xe40c0d0a	python 3.4 byte-compiled
 0xee0c0d0a	python 3.4 byte-compiled
 0xf80c0d0a	python 3.5.1- byte-compiled
 0x020d0d0a	python 3.5.1- byte-compiled
 0x0c0d0d0a	python 3.5.1- byte-compiled
 0x160d0d0a	python 3.5.1- byte-compiled
 0x170d0d0a	python 3.5.2+ byte-compiled
 0x200d0d0a	python 3.6 byte-compiled
 0x210d0d0a	python 3.6 byte-compiled
 0x2a0d0d0a	python 3.6 byte-compiled
 0x2b0d0d0a	python 3.6 byte-compiled
 0x2c0d0d0a	python 3.6 byte-compiled
 0x2d0d0d0a	python 3.6 byte-compiled
 0x2f0d0d0a	python 3.6 byte-compiled
 0x300d0d0a	python 3.6 byte-compiled
 0x310d0d0a	python 3.6 byte-compiled
 0x320d0d0a	python 3.6 byte-compiled
 0x330d0d0a	python 3.6 byte-compiled
 0x3e0d0d0a	python 3.7 byte-compiled
 0x3f0d0d0a	python 3.7 byte-compiled
 0x400d0d0a	python 3.7 byte-compiled
 0x410d0d0a	python 3.7 byte-compiled
 0x420d0d0a	python 3.7 byte-compiled
 0x480d0d0a	python 3.8 byte-compiled
 0x490d0d0a	python 3.8 byte-compiled
 0x520d0d0a	python 3.8 byte-compiled
 0x530d0d0a	python 3.8 byte-compiled
 0x540d0d0a	python 3.8 byte-compiled
 0x550d0d0a	python 3.8 byte-compiled
 0x5c0d0d0a	python 3.9 byte-compiled
 0x5d0d0d0a	python 3.9 byte-compiled
 0x5e0d0d0a	python 3.9 byte-compiled
 0x5f0d0d0a	python 3.9 byte-compiled
 0x600d0d0a	python 3.9 byte-compiled
 0x610d0d0a	python 3.9 byte-compiled

참고: 1, 2, 3

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.