1. 程式人生 > >py,pyc,pyw文件的區別和使用

py,pyc,pyw文件的區別和使用

mar mark 文件中 復制 .exe 防止 arm pyc import

熟悉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文件的區別和使用