在寫Python程序時,將不同功能代碼寫在不同文件中是一個好習慣,但是對於某些情況。如需要將腳本提供給別人運行使用,如若將程序寫在幾個文件中,則需要將文件都發給他人。別人就需要管理不同文件,這樣對於別人來說會顯得雜亂,麻煩。如果將代碼都寫在一個文件中,對於簡單的腳本沒啥毛病,但如果復雜了代碼量多了,都寫在一個文件,則對自己而言不好維護。
如果能將不同文件代碼放在一個目錄中,直接運行目錄,不就能解決了這個問題了嗎。Python提供這樣的方式:Python能直接執行一個包含 __main__.py
的目錄或者ZIP文件
例子
目錄結構:
.
|—— ABC/
|—— A.py
|—— __main__.py
示例代碼:
# A.py
def echo():
print('ABC!')
# __main__.py
if __name == '__main__':
import A
A.echo()
運行情況:
$ python ABC
ABC!
就如同上面這個簡單例子,寫代碼按照這樣的結構,將多個代碼文件放在一個目錄中,提供一個主程序入口__main__.py
。然后運行目錄時,python解釋器會自動運行__main__.py
中的代碼。
此外你還可以直接將多個文件壓縮成一個zip文件。直接運行zip文件也同樣可以。
目錄結構:
.
|—— ABC.zip/
|—— A.py
|—— __main__.py
運行情況:
$ python ABC.zip
ABC!
其它
直接運行目錄還是壓縮成zip,j就看你自己喜歡啥了。不過如果除代碼文件外還有其它數據文件的話,可能目錄的方式要方便點,你可以直接使用使用這個數據文件。
而壓縮成ZIP文件后,則需要利用解壓zip文件的庫如zipfile
來讀取zip文件內的數據文件。
自Python3.5 開始,Python標准庫中新增了zipapp模塊,也可以創建這樣的可執行zip文件。
參考
《Python Cookbook》
其它文章
可以的話可以關注一波個人微信公號