python 標準庫-argparse 學習

鏈接:https://docs.python.org/3/library/argparse.html#module-argparse

第一步:創建解析器

parser = ArgumentParser(prog=None, usage=None, description=None, epilog=None, parents=[], formatter_class=argparse.HelpFormatter, prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True)

參數 :

  1. prog=None:定義程序的名稱,方便以後用 %(prog)s 引用這個名字

  2. usage=None:用法列表,形如 usage: PROG [-h] [–sum] 默認是系統根據參數自定義的,可以自己之傳值指定。

  3. description:在開頭加入一短話
  4. epilog :尾部一段話
  5. romfile_prefix_chars:表示參數可以使用文件,默認不可以。
  6. argument_default :全局默認值。argument_default =argparse.SUPPRESS 自動隱藏。
  7. conflict_handler :本來不允許,兩個參數一樣的,設置成conflict_handler = ‘resolve’。允許,並且是新值覆蓋舊
  8. add_help : 默認有一個-h參數可用,可以設置成False

第二步:add_argument()

ArgumentParser.add_argument(name or flags...[, action][,  nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

標識命令行參數如何被解析。

  1. name or flags :有兩種,區別是位置參數必須有,根據位置傳入,可選參數要提前告知。‘BAR’-f ‘F’

    1. optional argument:可選的‘-f’ ‘–foo’
    2. positional argument :必須有的 ‘bar’通過前後位置輸入
  2. action: 對待參數的動作

    1. action=”store”:默認屬性,用來儲存命令行參數
    2. action=”store_true ” or action=”store_true ” :設置默認參數爲true.這個相當於一個開關,最好只能讓用戶選true或者false
    3. action=”store_const: 如果用戶不給,默認使用const的值。對與可選變量很好用

      parser = argparse.ArgumentParser()
      parser.add_argument('--foo', action='store_const', const=42)
      parser.parse_args('--foo'.split())
    4. action=”append :這個儲存一個列表,會把每一個參數append到list中

    5. action=”append_const:和store_const效果一樣,都有const= 的屬性
    6. action=”count:能自動返回關鍵字參數的調用次數,比如:-vvv 爲三次
    7. action=”version:能夠打印版本的信息,當啓動的時候會自動調用
    8. 還可以自定一個類,來解析,暫時不需要
  3. type:數據類型。默認是字符串,能設置爲float,int,open。或着是自定的方法,接受一個string,返回東西

  4. choices :參數必須從這個列表中選擇choices=[‘rock’, ‘paper’, ‘scissors’]
  5. required:讓-f 類型的變成必選參數
  6. help:設置這個參數的 幫助文檔,可以使用%(prog)s,%(default)s, %(type)s,等參數的信息(這個字符串如果要標識%請用 %%)
  7. metavar:別名,就是顯示着好看,沒什麼用,默認是變成大寫
  8. dest: :parse_args()輸出的時候的名字,最終的屬性名字。

第三步:parse_args()得到輸入的屬性

args = parser.parse_args()
返回的是Namespace類,這是一個簡單類,就是爲了儲存屬性值

  1. vars(args):把Namespace類轉化爲 dick_like類型

所以,像字典方法一樣,如果你需要值,就是用 args.屬性名字,有意思的是屬性名字就是你當時起的屬性名字(不帶”–“)

over

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章