py,pyc,pyw文件的区别和使用
熟悉 python 编程的都知道 ,python 三种最常见的 py 文件格式,.py , .pyc , .pyw , 下面说一说它们各自的使用。py 文件python最常见的文件,是python项目的源码;文件执行时linux下调用python执行,windows下调用python.exe;如果在终端窗口或IDE执行命令,其相关的print(),或执行结果打印...
熟悉 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后缀没有区别 。
更多推荐
所有评论(0)