浅谈Python的文件类型


Posted in Python onMay 30, 2016

Python的文件类型主要分为3种:源代码(source file)、字节码(byte-code file)、优化的字节码(optimized file)。这些代码都可以直接运行,不需要编译或者连接。这正是Python语言的特性,Python的文件通过python.exe和pythonw.exe解释运行。

1.源代码

Python的源文件以"py"为扩展名,有python.exe解释运行,可在控制台下运行。"pyw"是图形开发用户接口(GUI)文件的扩展名,作为桌面应用程序,这种文件用于开发图形界面的,由pythonw.exe解释运行。

"py"和"pyw"的文件都可以用文本编辑器打开并编辑。

2.字节代码

Python的源文件经过编译之后生成扩展名为"pyc",该文件不能用文本编辑器打开或编辑。"pyc"文件与平台无关,因此Python的程序可以运行在Windows、Unix和Linux等系统上。

通过运行一下脚本可以将"py"文件编译成"pyc"文件。

import py_compile2 py_compile.compile("hello.py")

运行之后可以得到"hello.pyc"文件,"pyc"文件存放于源文件路径中的__pycache__下。参见:https://www.python.org/dev/peps/pep-3147/

运行:

浅谈Python的文件类型

 

浅谈Python的文件类型

3.优化代码

经过优化的代码生成扩展名为"pyo"的文件,该类文件也不能用文本编辑器打开或者编辑。"pyo"类型的文件需要通过命令行工具生成。win+R启动命令行,进入到"py"文件所在目录,输入一下命令进行编译。

python -o -m py_compile hello.py

"-o" 表示生成优化代码

"-m" 表示把 py_compile模块作为脚本运行,编译代码需要调用 py_compile模块的complie()方法。

目前以"pyo"为扩展名的形式已经作废,均采用"pyc"为扩展名,在文件名称上进行区别。参见:https://www.python.org/dev/peps/pep-0488/

运行命令之后在源文件所在文件夹下__pycache__目录中生成xxx.cpython-xx.opt-x.pyc文件。

例如编译hello.py文件之后生成hello.cpython-35.opt-1.pyc文件。

浅谈Python的文件类型

以上这篇浅谈Python的文件类型就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python正则表达式介绍
Aug 06 Python
在Python中进行自动化单元测试的教程
Apr 15 Python
利用Python的Django框架中的ORM建立查询API
Apr 20 Python
Python中几个比较常见的名词解释
Jul 04 Python
Python 使用SMTP发送邮件的代码小结
Sep 21 Python
python调用c++ ctype list传数组或者返回数组的方法
Feb 13 Python
Django保护敏感信息的方法示例
May 09 Python
Django1.11配合uni-app发起微信支付的实现
Oct 12 Python
python中使用you-get库批量在线下载bilibili视频的教程
Mar 10 Python
Python RabbitMQ实现简单的进程间通信示例
Jul 02 Python
python3将变量输入的简单实例
Aug 19 Python
python3美化表格数据输出结果的实现代码
Apr 14 Python
python中string模块各属性以及函数的用法介绍
May 30 #Python
Python 常用string函数详解
May 30 #Python
整理Python 常用string函数(收藏)
May 30 #Python
深入浅析python继承问题
May 29 #Python
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
May 28 #Python
python自动翻译实现方法
May 28 #Python
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
May 27 #Python
You might like
php的urlencode()URL编码函数浅析
2011/08/09 PHP
PHP读取数据库并按照中文名称进行排序实现代码
2013/01/29 PHP
apache和PHP如何整合在一起
2015/10/12 PHP
PHP使用redis实现统计缓存mysql压力的方法
2015/11/14 PHP
JavaScript中的对象化编程
2008/01/16 Javascript
jQuery DOM操作小结与实例
2010/01/07 Javascript
JS+CSS制作DIV层可(最小化/拖拽/排序)功能实现代码
2013/02/25 Javascript
用javascript关闭本窗口不弹出询问框的方法
2014/09/12 Javascript
JavaScript动态改变div属性的实现方法
2015/07/22 Javascript
Node.js中文件操作模块File System的详细介绍
2017/01/05 Javascript
原生javascript实现图片放大镜效果
2017/01/18 Javascript
vue-router跳转页面的方法
2017/02/09 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
vue 多入口文件搭建 vue多页面搭建的实例讲解
2018/03/12 Javascript
Vue2.X 通过AJAX动态更新数据
2018/07/17 Javascript
详解为生产环境编译Angular2应用的方法
2018/12/10 Javascript
解决layui动态添加的元素click等事件触发不了的问题
2019/09/20 Javascript
JS使用正则表达式判断输入框失去焦点事件
2019/10/16 Javascript
[44:39]2014 DOTA2国际邀请赛中国区预选赛 NE VS CNB
2014/05/21 DOTA
[00:32]2018DOTA2亚洲邀请赛出场——VP
2018/04/04 DOTA
跟老齐学Python之关于循环的小伎俩
2014/10/02 Python
Python实现感知机(PLA)算法
2017/12/20 Python
Python实现数据可视化看如何监控你的爬虫状态【推荐】
2018/08/10 Python
python random从集合中随机选择元素的方法
2019/01/23 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
2020/02/07 Python
python画图常规设置方式
2020/03/05 Python
Python count函数使用方法实例解析
2020/03/23 Python
Python多分支if语句的使用
2020/09/03 Python
五种Python转义表示法
2020/11/27 Python
诺思信科技(南京)有限公司.NET笔试题答案
2013/07/06 面试题
物业客服专员岗位职责
2013/11/30 职场文书
幼儿园六一亲子活动方案
2014/08/26 职场文书
幼儿园大班教学反思
2016/03/02 职场文书
教你用eclipse连接mysql数据库
2021/04/22 MySQL
Win10系统下配置Java环境变量
2021/06/13 Java/Android
Mongodb 迁移数据块的流程介绍分析
2022/04/18 MongoDB