Python學習筆記-argparse

使用argparse模塊可以使Python腳本很方便地從命令行中獲取並解析出所需的參數。使用起來非常簡單,只需幾行代碼即可。從官網的文檔中學習過後,分享點心得。
官網鏈接:
15.4. argparse — Parser for command-line options, arguments and sub-commands — Python 2.7.11 documentation

add_argument()方法中一些參數說明

  • 1.name or flags
    這是add_argument()唯一一個必須的參數,簡單地說這個參數是我們所想要從命令行中獲得的參數的名字,但其實它並不是,dest纔是這個獲得的參數的名字。它更像一個標誌,指示一個參數。它可以是一個名字,也可以是多個可選的名字。

  • argparse獲取的命令行參數有兩類:optional argument和positional argument。區別體現在name or flags中。

  • optional argument是可選的參數,在命令行中運行腳本時無論輸不輸入均可(如果你的腳本中不需要這個參數也能正確運行的話)。在add_argument()中name or flags必須帶有前綴‘-’,且可有多個可選,如:

parser.add_argument('-f', '--foo')
  • 在命令行中輸入(或使用)該參數時在需要帶有將這個name or flags寫出來,即’-f’或’–foo’,與輸入的參數之間隔有空格或等號。表示輸入的參數爲與之對應的optional argument。
    也有不需要帶參數,只輸入該name or flags的情況,如默認的’-h’就是如此。

  • positional argument是必須輸入的參數(一般情況下),如果運行腳本時沒有輸入對應的參數,則會報錯。它的name or flags必須是一個不帶’-‘前綴的名字。在命令行中輸入該參數時不需要帶有這個name or flags。
    如果你parser添加過多個argument,在調用parse_args()時,會先識別所有帶有前綴’-‘的optional argument,然後再將剩餘的參數按順序被視爲對應的positional argument。

  • 2.action
    指示如何處理命令行參數。有以下可選:

    • ’store’ - 保存你所輸入的參數,這個是默認值。
    • ‘store_const’ - 與optional argument搭配使用,當從命令出現了該argument,則保存const中的常量。
    • ‘store_true’ and ‘store_false’ - 與上面’store_const’類似,只是保存的是真假值,若在命令行中使用了該argument,則保存對應的真假值,否則保存相反的。
    • ‘append’ - 與optional argument搭配使用,保存一個列表,內容爲每次輸入的參數,這個argument可在命令行中被多次輸入。
    • ‘append_const’ - 與上面類似,保存一個列表,內容爲在命令行中出現過的每個具有相同dest的argument中的const。可用於保存多個常量進同一個列表。注意parse_args()中返回的真正給你是dest。
    • ‘count’ - 與optional argument搭配使用,保存一個整數,爲這個argument在命令行中出現的次數。
    • ‘help’
    • ‘version’
  • 3.nargs
    負責指示從命令行中讀取參數的數目。有以下可選:
    • N (an integer) - 使用後N個命令行參數將被保存到一個列表當中,即使N爲1時也會保存一個只有一個元素的列表。
    • ‘?’ - 一個參數將被保存,如果不使用這個argument則保存default中的值,與optional argument或positional argument搭配均可,當與optional argument搭配時,僅使用了該argument而沒有再輸入參數時,將保存const中的值。
    • ‘*’ - 保存任意多個參數爲一個列表,不可用在多個positional argument中使用,一個還是可以的,可以在多個optional argument中使用,因爲當存在兩個或以上的positional argument使用’*’時,區分不出參數所對應的argument,而optional argument需要在參數前寫出name or flags,則不存在此問題。
    • ‘+’ - 與’*’類似,但參數個數至少爲1。
    • argparse.REMAINDER - 所有剩下的命令行參數都保存到一個列表中。
  • 4.const
    顧名思義,常量,配合某些action和nargs使用,不從命令行中接收參數,而保存這個const的值。注意const默認值爲None。
  • 5.default
    缺省值。
    所有的optional arguments和一些positional arguments可能不出現在命令行中,這時就是default起作用。
    當optional arguments的name or flags也沒有出現在命令行時,則保存default的值。
    如果default中的值是字符串,解析器會像從命令行中獲取它一樣去解析。
    positional arguments與nargs爲’?’或’*’搭配時,default值會在沒有與之對應的命令行參數出現時被保存。
    default值爲argparse.SUPPRESS時,當命令行中沒有出現與之對應的命令行參數,則當做什麼也沒發生,即當這個argument不存在。
  • 6.type
    數據的類型,可以是各種類型,甚至自定義。 將獲取的字符串自動轉化對應的數據類型。
  • 7.choices
    供選項,輸入的命令行參數必須包含在這裏面,否則報錯。任何具有in操作的的對象都可以是choices。
  • 8.required
    必須的,如果required = True,那麼這個optional arguments必須要出現在命令行中,否則報錯。但這就很矛盾了,這個可選的參數是必選的。
  • 9.help
    不多說。
  • 10.metavar
    打印help信息時,顯示的各個argument的名字。
  • 11.dest
    從命令行中獲取的參數(或者是const或者是default),最終被保存到dest中,它自動生成的名字取決於name or flags。如果是positional argument,那就是這個name or flags。如果是optional argument,就取name or flags中長名字中最長的一個,並去掉’- -‘,和將多餘的’-‘轉化爲’_’,若沒有長名字,則取第一個短名字。
    也可以自己重新定義,在add_argument()加上這個參數dest=即可。

會使用add_argument()方法,argparse就已經掌握了一大半了,普通地運用已經沒有問題了,關於argparse更多使用的方法和技巧,在官方文檔裏都有介紹,我就不一一列舉了。
文中沒有插入什麼代碼,詳細的可以去官方文檔裏查看。
即使英語不怎麼樣,Python代碼還是足夠看明白的。

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