python文件类型的学习笔记

一、文件分类:

1)*.py文件,这就是我们常见的py源文件,没什么好说的;
2)*.pyc, py源文件编译成的二进制字节码文件,依然由python加载执行,不过速度会提高,也会隐藏源码;
3)*.pyo,优化编译后的程序,也是二进制文件,适用于嵌入式系统。

二、生成pyc和pyo文件

1)如何生成pyc文件呢?

假设我们有一个1.py文件需要编译成pyc文件,则在python shell输入
import py_compile
py_compile.compile('1.py')
这样就可以生成pyc文件了
2)如何生成pyo文件呢?
python -O -m py_compile 1.py

另外,pyc和pyo跟py文件是一样的,依然可以用python 1.pyc等形式执行

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

[root@AY130704092906278009Z python]# cat hello.py
#!/usr/bin/python
print("hello world")
 

字节代码

python源文件经编译后生成的扩展名为pyc的文件

写一个python程序去编译上面的hello.py代码:(2.py程序代码如下)

[root@AY130704092906278009Z python]# cat 2.py
import py_compile
 
py_compile.compile('hello.py')

运行python 2.py可以看到生成了一个__pycache__文件夹,下面有一个pyc文件,那个文件也可以直接执行

[root@AY130704092906278009Z python]# python 2.py
[root@AY130704092906278009Z python]# ls
2.py  hello.py     reference.py  str_methods.py  using_list.py
code  __pycache__  seq.py        using_dict.py   using_tuple.py
代码优化

经过优化的源文件,扩民名为.pyo
运行:

python -O -m py_compile hello.py,同样他也生成在__pycache__文件夹下。

[root@AY130704092906278009Z python]# cd __pycache__/
[root@AY130704092906278009Z __pycache__]# ls
hello.cpython-33.pyc  hello.cpython-33.pyo
[root@AY130704092906278009Z __pycache__]# python hello.cpython-33.pyc
hello world
[root@AY130704092906278009Z __pycache__]# python hello.cpython-33.pyo
hello world

上面三种就是python的三种文件格式。【以上均基于python3.3上运行的结果,python其他版本可能有所不同】

时间: 2024-09-21 05:34:17

python文件类型的学习笔记的相关文章

Java 和 C/C++ 中的char 类型长度学习笔记

java 和 c/c++ 中的char 类型长度学习笔记 这两天在帮同学改一个加密程序.以下是c++语言的核心代码: char cpass[5]; for(int j=0;j<instring.length();j++){      cpass[j] ^= npwd;}   但是转成 java 写时会出现问题,乍一看,几乎可以原封不动的转换,可是结果却是有问题的. 经过网上资料的查找发现,是char类型的问题.实际上这就涉及到 c/c++ 中的数据类型和 java 的数据类型的比较. 先说 ch

python文件类型及运行方式

Ubantu中文件类型主要有三种: 1.源代码 源代码可以不经过编译,由python解释器解释执行 1.1一般ubantu系统中都默认集成了python的环境,所以在命令行敲入python命令,即可运行python程序,敲入exit()可退出python环境 1.2.新建python文件 >>>vim helloworld.py 然后在helloworld.py中键入 #!/usr/bin/python print "Hello world" >>>

Python 文件类型(*.py/*.pyc/*.pyo)

简述 Python 并非完全是解释性语言,它也存在编译.先将源码文件 *.py 编译为 *.pyc/*.pyo,然后由 Python 的虚拟机执行.相对于 *.py 文件来说,编译为 *.pyc/*.pyo 本质上和 *.py 没有太大区别,只是提高了模块的加载速度,并没有提高代码的执行速度. 简述 文件类型 生成 pyc 文件 生成 pyo 文件 效率对比 版权所有:一去丶二三里,转载请注明出处:http://blog.csdn.net/liang19890820 文件类型 *.py:源码文件

python中模块的学习笔记

模块是Pyhon最高级别的程序组织单元,它将程序代码和数据封装起来以便重用.实际的角度,模块往往对应Python程序文件. 模块名.函数名 为什么必须加上模块名这样调用呢?因为可能存在这样一种情况:在多个模块中含有相同名称的函数,此时如果只是通过函数名来调用,解释器无法知道到底要调用哪个函数.所以如果像上述这样引入模块的时候,调用函数必须加上模块名. import math #这样会报错 print sqrt(2) #这样才能正确输出结果 print math.sqrt(2) 有时候我们只需要用

Linux文件操作命令的学习笔记

一. 特殊目录: 目录 说明 . 表示当前目录 .. 表示上一层目录 – 表示前一个工作目录 ~ 表示"目前用户身份"所在的主文件夹 ~account 表示account这个用户的主文件夹(account是个账号名称) 二. 目录操作命令: ls:显示指定目录和文件的信息: pwd:Print Working Directory,显示当前目录名称: cd:Change Directory,进入指定的目录: mkdir:Make Directory,创建指定名称的目录: rmdir:Re

Python ORM框架SQLAlchemy学习笔记之安装和简单查询实例_python

最近正好在寻求一种Python的数据库ORM (Object Relational Mapper),SQLAlchemy (项目主页)这个开源项目进入了我的视线,本来想尝试着使用Django的ORM模块的,无奈Django的模块联系比较紧密,没能单独分拆下来,一定程度上说明Django自成体系的生态系统在给我们带来快速便捷的开发环境的同时牺牲了组装的灵活性. 初次学习,也没实质感觉到SQLAlchemy的好处,不过看其介绍的很多大公司均采用该项目,而且其支持的数据库还是蛮丰富的,所以我觉得花点时

Python中的异常处理学习笔记_python

Python 是面向对象的语言,所以程序抛出的异常也是类. 常见的异常类 1.NameError:尝试访问一个没有申明的变量 2.ZeroDivisionError:除数为 0 3.SyntaxError:语法错误 4.IndexError:索引超出序列范围 5.KeyError:请求一个不存在的字典关键字 6.IOError:输入输出错误(比如你要读的文件不存在) 7.AttributeError:尝试访问未知的对象属性 8.TypeError:传给函数的参数类型不正确,比如给 int 函数传

Python基础数据存储学习笔记

pickle是标准库中的一个模块,在Python 2中还有一个cpickle,两者的区别就是后者更快.所以,下面操作中,不管是用 import pickle ,还是用 import cpickle as pickle ,在功能上都是一样的. 而在Python 3中,你只需要 import pickle 即可,因为它已经在Python 3中具备了Python 2中的cpickle同样的性能. pickle.dump(obj,file[,protocol]) obj:序列化对象,在上面的例子中是一个

python的xml.dom学习笔记

首先说一下,由于这篇文章主要是自己随性学习写的,所以读者看起来可能很乱,呵呵.可以给大家稍微推荐一篇:http://www.cnblogs.com/xuxm2007/archive/2011/01/16/1936610.html 稍微清晰一点 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46