十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
python常見的文件格式是什么?相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
為確山等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及確山網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè)、確山網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
這幾天,剛好因工作需要爬取網(wǎng)站圖片資源,下載了幾款軟件,想重寫軟件,對.pyd文件格式產(chǎn)生了疑惑
一般認(rèn)為,Python 是一種解釋性語言,Python 在執(zhí)行時(shí),會先將 .py 文件中的源代碼編譯成 byte code (字節(jié)碼)
然后再由 Python Virtual Machine(虛擬機(jī)) 來執(zhí)行這些編譯 byte code。
這種機(jī)制的基本思想跟 Java、.NET 一致;但 Python Virtual Machine 與 Java 或 .NET 的 Virtual Machine 不同的是:Python 的 Virtual Machine 是一種更高級的 Virtual Machine。這里的高級并不是通常意義上的高級,不是說 Python 的 Virtual Machine 比 Java 或 .NET 的功能更強(qiáng)大,更拽,而是說和 Java 或 .NET 相比,Python 的 Virtual Machine 距真實(shí)機(jī)器的距離更遠(yuǎn)。或者可以這么說,Python 的 Virtual Machine 是一種抽象層次更高的 Virtual Machine。
Python 提供了一種中間編譯結(jié)果保存機(jī)制,即 byte code,或更準(zhǔn)確地說,保存 PyCodeObject。事實(shí)上,Python 確實(shí)提供了這樣一種機(jī)制 —— .pyc 文件。在執(zhí)行一個(gè) .py 文件的源代碼之后,Python 并不會自動生成與該 .py 文件對應(yīng)的 .pyc 文件。Python 會根據(jù)需要自動觸發(fā)、創(chuàng)建 .pyc 文件,原理很簡單,就是利用 Python 的 import 機(jī)制
在 Python 運(yùn)行過程中如碰到 import abc 這樣的語句,Python 將會在設(shè)定好的 path 中尋找 abc.pyc 或 abc.dll 文件。若沒有這樣的文件,而只是發(fā)現(xiàn)了 abc.py 文件,那么,Python 會首先將 abc.py 編譯成相應(yīng)的 PyCodeObject 中間結(jié)果,然后再創(chuàng)建 abc.pyc 文件,并將中間結(jié)果寫入該文件。接下來,Python 才會對 abc.pyc 文件進(jìn)行一個(gè) import 動作,實(shí)際上也就是將 abc.pyc 文件中的 PyCodeObject 重新在內(nèi)存中復(fù)制出來,加以運(yùn)行。
由于 Python .pyc 文件的此種運(yùn)行機(jī)制,所以,可隨時(shí)刪除所有中間過程 .pyc 文件,當(dāng) Python 再次運(yùn)行時(shí),還會重生成這些 .pyc 文件,對您所編輯程序的運(yùn)行并無任何影響。當(dāng)然,得有源代碼才行
視窗用 python.exe 運(yùn)行 .py ,用 pythonw.exe 運(yùn)行 .pyw。因?yàn)榘惭b視窗版 Python 時(shí),擴(kuò)展名 .py 自動被登記為用 python.exe 運(yùn)行, 而 .pyw 則被登記為用 pythonw.exe 運(yùn)行。
.py文件
以 .py 作擴(kuò)展名的文件是 Python 源代碼文件,由 python.exe 解釋,可在控制臺下運(yùn)行。
當(dāng)然,也可用文本編輯器或其它專用 Python IDE (集成開發(fā)環(huán)境) 工具進(jìn)行修改。
.pyc文件
以 .pyc 作擴(kuò)展名的文件是 python 編譯文件。.pyc 文件是不能直接用文本編輯器進(jìn)行編輯,其優(yōu)點(diǎn)是 .pyc 文件的執(zhí)行速度要遠(yuǎn)快于 .py 文件。
至于為什么要有 .pyc 文件,因?yàn)?.py 文件是可直接看到源碼的。若是軟件開發(fā)商,不可能把源碼泄漏出去?所以,就需編譯成 .pyc 后再發(fā)布。
但 .pyc 文件只是經(jīng)簡單編譯,并未加密,因此,有些工具還能反編譯它得出源代碼。
.pyw文件
.pyc 文件執(zhí)行時(shí),桌面會出現(xiàn)類似 CMD 命令的黑色 shell 窗口,十分難看,于是 .pyw 文件就應(yīng)運(yùn)而生了。.pyw 文件與 .pyc 文件的執(zhí)行,本質(zhì)上并沒什么區(qū)別,只是 .pyw 文件執(zhí)行的時(shí)候不會出現(xiàn)類似 CMD 命令的黑色 shell 窗口。
.pyw 文件格式主要是設(shè)計(jì)用來運(yùn)行 Python 純 GUI (圖形用戶界面) 程序的。純 GUI (圖形用戶界面) 程序的用戶不需要看到類似 CMD 命令的黑色 shell 控制臺窗口。當(dāng) .pyw 文件運(yùn)行時(shí),所有 stdout(標(biāo)準(zhǔn)輸入輸出)、stderr(標(biāo)準(zhǔn)錯誤) 輸出無效,所有原 stdin(標(biāo)準(zhǔn)輸入) 的讀取只會得到 EOF。
值得一提的是,開發(fā)純 GUI (圖形用戶界面) 程序時(shí),可暫時(shí)把 .pyw 改成 .py,以便運(yùn)行時(shí)調(diào)出控制臺窗口,看到所有錯誤信息,方便修改、調(diào)試。
注意:采用 PyQt、PySide 等 GUI (圖形用戶界面) 開發(fā)框架開發(fā)的程序,源文件仍可采用 .py,無需單獨(dú)使用 .pyw。
.pyd文件格式
.pyd 文件是非 Python,由其它編程語言 "編寫-編譯" 生成的 Python 擴(kuò)展模塊。
Python 要導(dǎo)入 .pyd 文件,實(shí)際上是在 .pyd 文件中封裝了一個(gè) module。在 python 中使用時(shí),把它當(dāng)成 module 來用就可以了,即:"import 路徑名.modulename" 即可,路徑名為 .pyd 文件所在的路徑。
基于 Qt/C++ 的 PyQt、PySide GUI (圖形用戶界面) 開發(fā)框架綁定,會為每個(gè) Qt/C++ 庫 .dll 文件生成一個(gè)中間 .pyd 文件。PyWin32 項(xiàng)目分發(fā)包中,也存在很多 MicroSoft Windows OS 相應(yīng) .dll 文件的中間 .pyd 文件。
Cython 可將個(gè)人基于 Python 語言編寫的 Python 模塊編譯成具有 C 語言特性的 .pyd 文件。
看完上述內(nèi)容,你們掌握python常見的文件格式是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!