熟悉python编程的都知道,python三种最常见的py文件格式,.py,.pyc,.pyw,下面说一说它们各自的使用。

py文件

  • python最常见的文件,是python项目的源码;

  • 文件执行时linux下调用python执行,windows下调用python.exe;

  • 如果在终端窗口或IDE执行命令,其相关的print(),或执行结果打印在当前的窗口上;

注意:

  • 在如pycharm中,当存在需要from *** import **这种需要导入时,无论在当前的目录下是否存在_init_.py文件,都可以直接导入同一目录下的文件。
# 例当前的文件目录test文件夹下
__init__.py
test.py
main.py
took.py # 在window下书写main.py时可以
from test.took import *
# 也可以
from took import * # 但是IDE可能会提示报错,这个时候不用管它 # 在linux下,from test.took import * 执行会报错
  • 所以应该写成from took import *才最保险

pyc文件

  • Python提供了一种中间编译结果保存机制,即字节文件.pyc 文件。在执行一个 .py 文件的源代码之后,Python 并不会自动生成与该 .py 文件对应的 .pyc 文件,而是利用 Python的import机制。

  • python是解释型语言,按代码从上到下的顺序边解释边执行,如果运行中碰到import XXX这样的语句,python会按照响应的路径去寻找xxx.pyc文件,如果没有找到,但存在xxx.py文件,Python会首先将abc.py编译成相应的PyCodeObject中间结果,然后再创建 xxx.pyc 文件,并将中间结果写入该文件。接下来,Python才会对xxx.pyc文件进行一个 import 动作,也就是将 abc.pyc文件中的PyCodeObject复制一份加载到内存中;

  • 由于.pyc文件的此种运行机制,可随时删除所有中间过程 .pyc 文件,当 Python 再次运行时,会重生成这些 .pyc 文件。

  • pyc文件是不能使用编辑器进行编辑的,它的执行速度远远快于py文件,此外执行pyc文件也可以简单地防止源代码泄漏;

  • 运行pyc文件的方式和运行py文件的方式是一样的

python xxx.pyc

pyw文件

windows环境

  • pyw文件运行的时候不会出现向pyc文件一样有闪烁的窗口,同时不会打开控制台窗口,相关的print()等输出会失效,程序在后台运行;

  • 可以使用双击的办法直接运行pyw文件,系统会调用pythonw.exe来运行;

  • 如果需要将相关的信息输出,可以:

pythonw \path\xxx.pyw 1>\path\stdout.txt 2>\path\stderr.txt

# 1代表标准输出,将标准输出重定向到stdout.txt中
# 2代表错误输出,将错误输出重定向到stderr.txt中

linux环境

  • 在linux环境中,所有的文件是不区别扩展名的,而是根据内容使用响应的程序运行,因此pyw后缀和pyc后缀没有区别。

py,pyc,pyw文件的区别和使用的更多相关文章

  1. python .py .pyc .pyw .pyo .pyd区别

    .py 文件 以 .py 作扩展名的文件是 Python 源代码文件,由 python.exe 解释,可在控制台下运行.当然,也可用文本编辑器进行修改. .pyc 文件 以 .pyc 作扩展名的文件是 ...

  2. Python各种扩展名(py, pyc, pyw, pyo, pyd)区别

    扩展名 在写Python程序时我们常见的扩展名是py, pyc,其实还有其他几种扩展名.下面是几种扩展名的用法. py py就是最基本的源码扩展名 pyw pyw是另一种源码扩展名,跟py唯一的区别是 ...

  3. python中.py和.pyw文件的区别

    :本文为博主原创文章,未经博主允许不得转载. 以下是摘录自百度问题的答案: 严格来说,它们之间的不同就只有一个:视窗运行它们的时候调用不同的执行档案. 视窗用 python.exe 运行 .py ,用 ...

  4. Python文件格式 .py .pyc .pyw .pyo .pyd的主要区别

    Python是一种面向对象.解释型计算机程序设计语言.Python 语法简洁.清晰,具有丰富和强大的类库.Python源代码遵循 GPL (GNU General Public License) 协议 ...

  5. python py pyc pyw pyo pyd之间区别

    来源: http://blog.csdn.net/chroming/article/details/52083387 1.py 脚本文件,是最基本的源码扩展名.windows下直接双击运行会调用pyt ...

  6. py, pyc, pyw, pyo, pyd 及发布程序时的选择 Compiled Python File (.pyc)

    Python 程序扩展名(py, pyc, pyw, pyo, pyd)及发布程序时的选择 - 司开星的专栏 - CSDN博客 https://blog.csdn.net/chroming/artic ...

  7. py, pyc, pyw, pyo, pyd Compiled Python File (.pyc) 和Java或.NET相比,Python的Virtual Machine距离真实机器的距离更远

    https://my.oschina.net/renwofei423/blog/17404 1.      PyCodeObject与Pyc文件 通常认为,Python是一种解释性的语言,但是这种说法 ...

  8. [Python] [转] python.exe和pythonw.exe的区别(区分.py、.pyw、.pyc文件)

    Windows系统搭建好Python的环境后,进入Python的安装目录,大家会发现目录中有python.exe和pythonw.exe两个程序.如下图所示: 它们到底有什么区别和联系呢? 概括说明一 ...

  9. C语言中 *.c和*.h文件的区别!

    C语言中 *.c和*.h文件的区别!  http://blog.163.com/jiaoruijun07@126/blog/static/68943278201042064246409/        ...

随机推荐

  1. Spring Autowired原理

    今天来整理一下Spring的自动装配 autowire一节,在这里我们要解决以下问题: 什么是自动装配? 自动装配的意义? 自动装配有几种类型? 如何启用自动装配? 自动装配将引发的问题? 一.什么是 ...

  2. React.js学习笔记(一):组件协同与mixin

    组件协同: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF ...

  3. HDU4045_Machine scheduling

    题意为要你从编号为1-n的所有机器中间选择出r个机器且每一个机器的编号只差不小于k-1,然后将选择的r个机器分为m组有多少种方案. 其实这题目的两个步骤是相互独立的. 总共的方案数等于选择的方案数乘以 ...

  4. Android四大组件之contentProvider

    Activity,Service,broadcast and Contentprovider android 4 大组件. ContentProvider:使用: public class Image ...

  5. C++解析(23):多态与C++对象模型

    0.目录 1.多态 2.C++对象模型 2.1 使用C语言实现封装 3.继承对象模型 4.多态对象模型 4.1 使用C语言实现多态 5.小结 1.多态 面向对象中期望的行为: 根据实际的对象类型判断如 ...

  6. 【Loj#535】花火(线段树,扫描线)

    [Loj#535]花火(线段树,扫描线) 题面 Loj 题解 首先如果不考虑交换任意两个数这个操作,答案就是逆序对的个数. 那么暴力就是枚举交换哪个两个数,然后用数据结构之类的东西动态维护逆序对. 但 ...

  7. 洛谷P4609 [FJOI2016]建筑师 【第一类斯特林数】

    题目链接 洛谷P4609 题解 感性理解一下: 一神带\(n\)坑 所以我们只需将除了\(n\)外的\(n - 1\)个元素分成\(A + B - 2\)个集合,每个集合选出最大的在一端,剩余进行排列 ...

  8. BZOJ3724 [HNOI2012]集合选数 【状压dp】

    题目链接 BZOJ3724 题解 构造矩阵的思路真的没想到 选\(x\)就不能选\(2x\)和\(3x\),会发现实际可以转化为矩阵相邻两项 \[\begin{matrix}1 & 3 &am ...

  9. 使当前对象相对于上层DIV 水平、垂直居中定位

    <!doctype html> <html> <head> <meta http-equiv="content-type" content ...

  10. IntelJ 快捷键

    1.在IntelJ中和Eclipse中稍有不同,在Eclipse中,输入main再按Alt+/即可自动补全main函数,但是在IntellJ中则是输入psvm,选中即可 2.在方法体内部有for循环, ...