为什么80%的码农都做不了架构师?>>>   

云计算Python自动化运维开发实战 三、python文件类型

导语:

python常用的有3种文件类型

1. 源代码     py

2. 字节代码  pyc

3. 优化代码  pyo

源代:

python源代码的文件以”py"为扩展名,由python程序解释,不需要编译

python源文件经编译后生成的扩展名为"pyc"的文件,用于隐藏代码,提高加载速度 编译方法:

生成单个pyc文件:

方法1:代码方式

#vim  compile.py

import py_compile

py_compile.compile("hello.py")

方法2:命令行方式

#python  -m py_compile hello.py

-m  相当于脚本中的import

批量生成pyc文件:

一般来说,我们的工程都是在一个目录下的,一般不会说仅仅编译一个py文件而已,而是需要把整个文件夹下的py文件都编译为pyc文件,python又为我们提供了另一个模块:compileall 。使用方法如下:

方法1:代码方式

import compileall

compileall.compile_dir(r'/game')

方法2:命令行方式

# python -m compileall /root/src/

优化代码:

经过优化编译后的文件,扩展名为“pyo” pyo是优化编译后的程序,也可以提高加载速度,针对嵌入式系统,把需要的模块编译成pyo文件可减少容量,本质上和pyc没有区别

优化方法:

#python -O -m py_compile hello.py

注意: 字节代码和优化代码不能直接执行,只能用解释器运行

正确执行方法:

#python   hello.pyc

#python   hello.pyo

错误执行方法:

#./hello.pyc   //这样执行会报错

外翻:

  1. 什么是pyc文件: pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python的虚拟机来执行的,这个是类似于JAVA或者.NET的虚拟机的概念。pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的,2.5编译的pyc文件,2.4版本的python是无法执行的。
  2. 为什么需要pyc文件: 这个需求很明显,因为py文件是可以直接看到源码的,如果你是开发商业软件的话,不可能把源码也泄漏出去吧?所以就需要编译为pyc后,再发布出去。当然,pyc文件也是可以反编译的,不同版本编译后的pyc文件是不同的,根据python源码中提供的opcode,可以根据pyc文件反编译出py文件源码,网上可以找到一个反编译python2.3版本的pyc文件的工具,不过该工具从python2.4开始就要收费了,如果需要反编译出新版本的pyc文件的话,就需要自己动手了,不过你可以自己修改python的源代码中的opcode文件,重新编译python,从而防止不法分子的po解。

转载于:https://my.oschina.net/530504/blog/3055194

云计算Python自动化运维开发实战 三、python文件类型相关推荐

  1. 云计算开发技术,Python自动化运维开发实战三部分

    导语: python常用的有3种文件类型 源代码 py 字节代码 pyc 优化代码 pyo 源代码: python源代码的文件以"py"为扩展名,由python程序解释,不需要编译 ...

  2. 云计算开发教程:Python自动化运维开发实战流程控制

    今天这篇文章是给大家分享一些云计算开发教程,今天讲解的是:Python自动化运维开发实战流程控制. Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. P ...

  3. 云计算学习教程,Python自动化运维开发实战

    都忘记是什么时候知道python的了,我是搞linux运维的,早先只是知道搞运维必须会shell,要做一些运维自动化的工作,比如实现一些定时备份数据啊.批量执行某个操作啊.写写监控脚本什么的. 后来发 ...

  4. Python自动化运维开发实战

    前言 云计算开发技术Python方面的知识少不了,Python编程博大精深,知识点众多,需要先整体上了解python的一些基本用法之后再去对每一个知识点细细研究,这样学习的速度会快很多.所以下面就先看 ...

  5. CrazyWing:Python自动化运维开发实战 六、流程控制

    Python 条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. Python程序语言指定任何非0和非空(null)值为true,0 或者 nu ...

  6. CrazyWing:Python自动化运维开发实战 四、Python变量

    导语: 1.什么是变量 2.变量名称的命名 3.变量赋值 4.变量存储数据的方式 5.引用计数 什么是变量: python学习过程中会用到许多数据,那为了方便操作,需要把这些数据分别用一个简单的名字代 ...

  7. CrazyWing:Python自动化运维开发实战 八、Python数据类型之字符串

    导语: 字符串是Python中最常用的数据类型,它是编程语言中表示文本的数据类型. 使用引号('或")来创建字符串. 创建字符串 只要为变量分配一个值即可. 例如: var1 = 'Hell ...

  8. CrazyWing:Python自动化运维开发实战 九、Python数据类型之列表

    导语 序列: 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推,Python已经内置确定序列的长度以及确定最大和最小 ...

  9. CrazyWing:Python自动化运维开发实战 五、Python运算符与表达式

    导语: 1.什么是运算符 2.什么是表达式 3.python运算符分类 4.python运算符优先级 什么是运算符: 运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.例如:2+3,其操 ...

最新文章

  1. 【神经网络】(19) ConvNeXt 代码复现,网络解析,附Tensorflow完整代码
  2. elementui datetimepicker 移动端_在 Gitee 收获 2.5K Star,前后端分离的 RuoYi 它来了
  3. 2016 只剩最后一个月 你的 技术债务 还清了吗?
  4. stm32l0的停止模式怎么唤醒_探索者 STM32F407 开发板资料连载第二十二章 待机唤醒实验
  5. angular例子笔记
  6. MVVM架构~knockoutjs系列之验证成功提示显示
  7. 亏损63亿,美图真能“美”到上市?
  8. Index of Oracle
  9. android修改系统时系统黑屏时不进入休眠状态
  10. php用户注册重复_php 验证用户名重复
  11. hbuilder自述文件_一次修复一个自述文件
  12. [JavaScript]WebBrowser控件下IE版本的检测
  13. 史上最全计算机毕业设计题目4(10万套,大部分全国唯一)
  14. PID公式的推导过程及实现代码
  15. 天龙八部科举答题问题和答案(全7/8)
  16. 电子设备的可靠性预计
  17. android开发中Wifi功能总结
  18. Unity 托管内存(Managed Memory)
  19. 构建DCT过完备字典
  20. css3复习P2(文本属性+列表属性+其他样式)

热门文章

  1. linux 后台运行jar包命令,Linux 运行jar包命令(Cent OS 7后台运行jar包)
  2. mysql 数据库的导入和导出
  3. 14.关于原子性的相关介绍
  4. 人脸检测--SSH: Single Stage Headless Face Detector
  5. 报错解决:ad NaCl helper startup ack (0 bytes)
  6. LeetCode 232. Implement Queue using Stacks--用2个栈来实现一个队列--C++解法
  7. LeetCode 583. Delete Operation for Two Strings--动态规划 DP--Java,Python,C++解法
  8. liunx tar安装mysql_在Linux下,安装Mysql(tar)
  9. curlopt_ssl_verifypeer后https还是验证不过_验证码识别竞赛解决方案(97%+一等奖)
  10. Python matplotlib 绘制量场图