Python的Argparse模塊是什么?


        近日在閱讀代碼的過程中遇到了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 相匹配。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM