Python的Argparse模組是什麼?
參考:https://www.cnblogs.com/Hangingter/p/8093562.html
近日在閱讀程式碼的過程中遇到了Argparse模組,記得前段時間已經看了,可是過了兩週現在又忘了, 看來寫程式碼一定要鑽研到底搞清楚其中原委才行,本文主要參考Python3.6系列官方文件的Argparse模組的教程。
注意:還有兩個模組與Argparse功能相似,getopt和optparse。argparse基於optparse,因此在使用方面非常相似,但是不推薦使用optparse,官方文件更推薦argparse。
1.Argparse的作用
舉一個小例子,在Linux系統中,我們常用到 ls 這個命令,預設情況下 ls 會顯示當前目錄的所有檔案或資料夾名稱,但是當我們想要獲得更多資訊,如檔案的許可權、建立時間等,就需要在 ls 命令後加上 -all 或其他被允許的指令,因此對 ls 這個命令而言,假設我們想改變程式的行為,顯示每個檔案的更多資訊,而不是隻顯示檔名。 在這種情況下,-all 被稱為可選引數。同樣的, ls 還具有 -h 這個可以選擇的引數,這表示開啟幫助文字。 這非常有用,你可以遇到一個你以前從未使用過的程式,並且可以簡單地通過閱讀幫助文字來弄清楚它是如何工作的。
Argparse的作用就是為py檔案封裝好可以選擇的引數,使他們更加靈活,豐富。
2.Argparse的基礎
下面介紹argparse的基礎呼叫。把下面的程式碼寫入,儲存為prog.py
1 import argparse 2 parser = argparse.ArgumentParser() 3 parser.parse_args()
OK,呼叫python3,執行一下試試:
$ python3 prog.py $ python3 prog.py --help
usage: prog.py [-h] optional arguments: -h, --help show this help message and exit
$ python3 prog.py --verbose usage: prog.py [-h] prog.py: error: unrecognized arguments: --verbose
$ python3 prog.py foo usage: prog.py [-h] prog.py: error: unrecognized arguments: foo
第一個命令直接執行指令碼程式,沒有任何輸出,因為該指令碼並沒有執行任何選項,源程式也沒有設定預設,所以不會有引數傳出。第二個命令使用--help引數的時候沒有報錯,系統給出了結果,那是系統預設的幫助資訊。很明顯,最後兩次使用都報錯了,因為該指令碼內並沒有寫入verbose和foo。
2.給Argparse加上引數
同樣的,寫上一段python程式碼,儲存為prog.py供之後呼叫:
1 import argparse 2 parser = argparse.ArgumentParser() 3 parser.add_argument("echo") 4 args = parser.parse_args() 5 print(args.echo)
執行結果如下:
$ python3 prog.py usage: prog.py [-h] echo prog.py: error: the following arguments are required: echo $ python3 prog.py --help usage: prog.py [-h] echo positional arguments: echo optional arguments: -h, --help show this help message and exit $ python3 prog.py foo foo
添加了add_argument()後,這是我們用來指定程式可以接受的命令列選項。 此時我已經命名 echo (linux中的輸出命令),所以當呼叫時,要求我們指定一個選項。parse_args()方法實際上從指定的選項中返回一些資料,此時是echo。argparse可以直接執行(即不需要指定哪個儲存後的變數)。 它的名字和指定的字串引數 echo 相匹配。