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

目录

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专栏),问题已彻底解决,欢迎参考!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/158844.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(动手学习深度学习)第13章 实战kaggle竞赛:狗的品种识别

文章目录 1. 导入相关库2. 加载数据集3. 整理数据集4. 图像增广5. 读取数据6. 微调预训练模型7. 定义损失函数和评价损失函数9. 训练模型 1. 导入相关库 import os import torch import torchvision from torch import nn from d2l import torch as d2l2. 加载数据集 - 该数据…

编程中的各种常见的文件编码有哪些?

在计算机编程中&#xff0c;常见的文件编码有很多种。下面是一些常见的文件编码&#xff1a; UTF-8&#xff08;Unicode Transformation Format - 8-bit&#xff09;&#xff1a; 它是一种变长字符编码&#xff0c;能够表示世界上几乎所有的字符&#xff0c;是最常用的 Unicode…

java抽象类和static

抽象类 并不是所有的类都是用来描绘对象的, 如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 抽象类 使用abstract 修饰类抽象类不能被实例化。在抽象类当中&#xff0c;可以有抽象方法&#xff0c;或者 非抽象方法!什么是抽象方法&#xff0c;一个方…

基于野马算法优化概率神经网络PNN的分类预测 - 附代码

基于野马算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于野马算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于野马优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神经网络的光滑…

【FPGA】Verilog:计数器 | 异步计数器 | 同步计数器 | 2位二进制计数器的实现 | 4位十进制计数器的实现

目录 Ⅰ. 实践说明 0x00 计数器(Counter) 0x01 异步计数器(Asynchronous Counter)

深度学习中的图像融合:图像融合论文阅读与实战

个人博客:Sekyoro的博客小屋 个人网站:Proanimer的个人网站 abs 介绍图像融合概念&#xff0c;回顾sota模型&#xff0c;其中包括数字摄像图像融合&#xff0c;多模态图像融合&#xff0c; 接着评估一些代表方法 介绍一些常见应用&#xff0c;比如RGBT目标跟踪&#xff0c;…

鸿蒙4.0开发笔记之DevEco Studio启动时不直接打开原项目(二)

1、想要在DevEco Studio启动时不直接打开关闭前的那个项目&#xff0c;可以在设置中进行。 有两个位置可以进入“设置”&#xff0c;一个是左上角的File>Settings&#xff0c;二是右上方的设置图标。 2、进入Settings界面以后&#xff0c;选择Appearance&Behavior下面…

Java Stream中的API你都用过了吗?

公众号「架构成长指南」&#xff0c;专注于生产实践、云原生、分布式系统、大数据技术分享。 在本教程中&#xff0c;您将通过大量示例来学习 Java 8 Stream API。 Java 在 Java 8 中提供了一个新的附加包&#xff0c;称为 java.util.stream。该包由类、接口和枚举组成&#x…

AIGC创作系统ChatGPT网站系统源码,支持最新GPT-4-Turbo模型

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

万宾科技智能井盖的效果怎么样?

日常出行过程中&#xff0c;人们最不想看到交通拥堵或者道路维修等现象&#xff0c;因为这代表出行受到影响甚至会导致不能按时赴约等。所以城市路面的安全和稳定&#xff0c;是市民朋友非常关心的话题。骑行在路上的时候&#xff0c;如果经过井盖时发出异常声响&#xff0c;骑…

Apache配置文件详解

引言: Apache是一种功能强大的Web服务器软件,通过配置文件可以对其行为进行高度定制。对于初学者来说,理解和正确配置Apache的配置文件是非常重要的。本文将详细解释Apache配置文件的各个方面,并给出一些入门指南,帮助读者快速上手。 1、主配置文件(httpd.conf): 主…

jQuery【菜单功能、淡入淡出轮播图(上)、淡入淡出轮播图(下)、折叠面板】(五)-全面详解(学习总结---从入门到深化)

目录 菜单功能 淡入淡出轮播图(上) 淡入淡出轮播图(下) 折叠面板 菜单功能 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><…

这是大学生就业网站最基础的布局。

<!DOCTYPE html> <html> <head> <title>大学生就业网站</title> <style> /* Reset default margin and padding */ *, *::before, *::after { margin: 0; padding: 0; box-s…

2023亚太地区数学建模C题思路+模型+代码+论文

2023亚太杯&#xff0c;亚太地区C题思路模型&#xff1a;开赛后第一时间更新&#xff0c;获取见文末名片 【赛程安排】   注册截止日期&#xff1a;北京时间2023年11月22日&#xff08;星期三&#xff09;   竞赛开始时间&#xff1a;北京时间2023年11月23日&#xff08;星…

【python基础】文件和异常详解:使用、读取、写入、追加、保存用户的信息,以及优雅的处理异常

文章目录 一. 从文件中读取数据1. 读取整个文件2. 文件路径3. 逐行读取4. 创建一个包含文件各行内容的列表 二. 写入文件1. 写入空文件2. 写入多行3. 附加到文件 三. 异常1. 处理ZeroDivisionError异常2. 使用try-except代码块3. try-except-else ing4. 处理FileNotFoundError异…

centos7安装mariadb

步骤 1: 更新系统 确保您的系统已更新为最新版本。在终端或命令行中执行以下命令&#xff1a; sudo yum update步骤 2: 安装MariaDB 添加MariaDB仓库 sudo yum install epel-release # 安装 EPEL 软件仓库 sudo rpm -Uvh https://downloads.mariadb.com/MariaDB/mariadb_re…

SpingBoot原理

目录 配置优先级Bean管理 (掌握)Bean的获取 ApplicationContext.getBeanBean的作用域 Scope("prototype") Lazy第三方Bean Bean Configuration SpringBoot底层原理 起步依赖与自动配置(无需手撸但面试高频知识点)自动配置引入第三方依赖常见方案方案1&#xff1a;Com…

46-设计问题-最小栈

原题链接&#xff1a; 198. 打家劫舍 题目描述&#xff1a; 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&a…

Java引用和内部类

引用 引用变量 引用相当于一个 “别名”, 也可以理解成一个指针. 创建一个引用只是相当于创建了一个很小的变量, 这个变量保存了一个整数, 这个整数表示内存中的一个地址. new 出来的数组肯定是在堆上开辟的空间,那么在栈中存放的就是引用,引用存放的的就是一个对象的地址,代表…