Python之pyc文件的生成与反编译

目录

1、什么是pyc文件

2、手动生成pyc文件

3、pyc文件的执行

4、pyc文件的反编译


1、什么是pyc文件

pyc文件(PyCodeObject)是Python编译后的结果。当python程序运行时,编译的结果是保存于PyCodeObject,程序运行结束后,Python就将PyCodeObject写入到pyc文件中,这是个字节码文件。

2、手动生成pyc文件

首先我们新建一个py文件,如下图:

Python之pyc文件的生成与反编译_第1张图片

正常运行test.py没有任何变化

那么我们在终端使用python命令追加参数 -m 进行运行呢?

python -m test.py

可以看到生成了一个 __pycache__ 文件夹,进入该文件夹即可看到一个pyc文件

Python之pyc文件的生成与反编译_第2张图片

内容如下:

看起来就是一堆乱码,这种主要是不想让别人看到源码的情况

�

    �i\e   �                   �   �  e d �  �         dS )z
Hello Python!N)�print� �    �D:\test\test\test.py�r      s   �� ��o� � � � � r   

此外,我们还可以使用 py_compile 模块将py文件转换为pyc文件

具体用法:

这个是在交互模式下进行的而不是终端,先导入模块,然后调用该模块下的compile方法

>>> import py_compile
>>> py_compile.compile("文件名.py")

Python之pyc文件的生成与反编译_第3张图片

同样生成了一个 __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之pyc文件的生成与反编译_第4张图片

关于这个问题的解决办法,我放在下一篇博客(Python专栏),问题已彻底解决,欢迎参考!

你可能感兴趣的:(Python,python,开发语言,pycharm,pyc反编译)