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 pathxxx.pyw 1>pathstdout.txt 2>pathstderr.txt

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

linux环境

  • 在linux环境中,所有的文件是不区别扩展名的,而是根据内容使用响应的程序运行,因此pyw后缀和pyc后缀没有区别。
原文地址:https://www.cnblogs.com/cwp-bg/p/8508847.html