最近看陈儒的《Python源码剖析》一书,其中讲解pyc文件结构时,提到解析工具pycparser,网上没找到源码,所以自己动手写一个。
! 目前仅针对python版本区间[2.5]内的pyc格式
若需要解析其他版本pyc,需找出编译pyc文件的python版本对应的CPython源码中的Include/opcode.h文件,转成类似opcode_2_5.py文件,再进行解析
files:
demo.py是示例脚本。
pyc_generator.py是生成pyc文件的脚本
pyc_parser.py是解析pyc,输出xml文件的脚本
usage:
$ python pyc_generator.py demo # 注意demo后面没有.py后缀
$ python pyc_parser.py demo.pyc
即可生成r.xml结果文件。
目前demo.pyc解析后的xml内容如下(xml格式大致模仿书中的实例,略有改动):