目录
1、什么是pyc文件
2、手动生成pyc文件
3、pyc文件的执行
4、pyc文件的反编译
1、什么是pyc文件
pyc文件(PyCodeObject)是Python编译后的结果。当python程序运行时,编译的结果是保存于PyCodeObject,程序运行结束后,Python就将PyCodeObject写入到pyc文件中,这是个字节码文件。
2、手动生成pyc文件
首先我们新建一个py文件,如下图:
正常运行test.py没有任何变化
那么我们在终端使用python命令追加参数 -m 进行运行呢?
python -m test.py
可以看到生成了一个 __pycache__ 文件夹,进入该文件夹即可看到一个pyc文件
内容如下:
看起来就是一堆乱码,这种主要是不想让别人看到源码的情况
��i\e � � � e d � � dS )z
Hello Python!N)�print� � �D:\test\test\test.py�<module>r s �� ��o� � � � � r
此外,我们还可以使用 py_compile 模块将py文件转换为pyc文件
具体用法:
这个是在交互模式下进行的而不是终端,先导入模块,然后调用该模块下的compile方法
>>> import py_compile
>>> py_compile.compile("文件名.py")
同样生成了一个 __pycache__ 文件夹 ,对应pyc文件即在里面
3、pyc文件的执行
那么pyc文件可以执行吗?
当然是可以的,也是在终端使用python命令执行:
python test.cpython-311.pyc
(注意需要切换到pyc文件所在的路径,即__pycache__ 文件夹下)
4、pyc文件的反编译
关于反编译我们就需要装一个库了--uncompyle
在终端使用命令进行安装:
pip install uncompyle
反编译命令:
注意: > 前后都有空格,前面为需要进行反编译的pyc文件名,后者为反编译结果的文件名
uncompyle6 test.cpython-311.pyc > test.py
uncompyle是Python的一个反编译工具,用于将pyc文件反编译为py源码
当然,如果你的Python版本不满足库文件内的要求,大概率是会遇到报错的
最常见报错:KeyError: '你的Python版本号'
如下图:
关于这个问题的解决办法,我放在下一篇博客(Python专栏),问题已彻底解决,欢迎参考!