py,pyc,pyw文件的区别和使用
熟悉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后缀没有区别。