1. 程式人生 > 其它 >Python的Argparse模組是什麼?

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 相匹配。