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後綴沒有區別。
py,pyc,pyw文件的區別和使用