選單

Python 命令引數詳解

大家好,歡迎來到 Crossin的程式設計教室 !

我想你最常用到的 Python 命令就是執行 Python 指令碼檔案,像這樣:

不過你知道為什麼這樣就可以直接執行 Python 程式碼麼?

還有, Python 還有一些常用的命令可玩,你試過嗎?

今天我們就來給大家來說說那些我們常用到的 Python 命令。

Python 命令引數詳解

python xxx.py

當你透過 Python 執行指令碼檔案的時候,

sys.argv[0]

會儲存這個 py 檔名稱:

而當你在 python xxx。py 後面再新增一些引數的時候,

sys.argv

也同樣可以接收到相關的引數:

Python 命令引數詳解

而且,它會把你的執行的 py 檔案路徑新增到

sys.path

中來,將它作為主模組來執行:

除了直接使用 python 執行指令碼檔案之外,你也可以使用 Python 執行整個 Python 專案目錄或者壓縮檔案,不過在這裡面你需要定義一個

__main__.py

,要不然直譯器無法識別執行:

而當你的目錄中有定義 __main__。py 的時候,它就可以將 main 新增到 sys。path 中來,作為 main 模組執行:

除此之外,你還可以直接使用指令碼的檔案執行 Python 程式碼,在你的指令碼檔案的第一行定義 Python 環境:

Python 命令引數詳解

接著新增指令碼檔案的執行許可權,然後就可以直接用指令碼檔名稱直接執行 Python 了:

python -c

使用

python -c

可以讓你在命令列中寫 Python 程式碼執行,可以使用分號

進行程式碼分行:

一種更好的方式是使用

空行

對程式碼進行分行:

Python 命令引數詳解

當你在 python 直譯器中使用 -c 命令的時候,它會將 -c 新增到 sys。argv[0] 中,將當前的路徑新增到 sys。path 中:

python -m

使用

-m

模組可以以指令碼的方式執行 Python 的模組或者包,因為執行的是模組,所以就不用像執行指令碼檔案那樣把 。py 副檔名稱寫出來。

可以看到,模組的完全路徑會新增到 sys。argv[0],將當前的路徑新增到 sys。path 中,將模組名作為 main 執行。

你能體會到

python xxx.py

python -m xxx

之間的區別麼?

當然,你也可以使用 -m 來執行包中的模組:

透過 -m 的形式,直譯器會透過搜尋路徑找到相應的模組執行,這樣你就不需要想執行 。py 那樣寫入檔案的絕對路徑啦。

使用 python -m 的一個常用場景是在不同的版本環境中執行相應的模組,比如使用

pip

安裝模組的時候:

python -i

當你使用 -c 命令的時候,還想執行完相關程式碼後進入 Python 互動模式就可以使用

-i

Python 命令引數詳解

還有其它的命令,你可以透過

python -h

找到相關的解釋:

Python 命令引數詳解

可能有時候你也想要提供一些命令給別人使用,Python 內建了一個

argparse

的庫,你可以使用它來建立你要提供的命令,比如這樣:

Python 命令引數詳解

執行的時候就可以使用相關的命令了:

Python 命令引數詳解

click庫

除此之外,還有一個叫做

click

的第三方庫,也是用來建立命令的,不同的是它可以用裝飾器的方式實現,你可以直接使用

@click.option

來定義命令選項,用起來相對簡單,這是一個官方的例子:

Python 命令引數詳解

使用起來是這樣的:

當然,它還提供了多種建立命令的方式,你可以在以下連結中找到:

https://click。palletsprojects。com/en/6。x/