Python 解析命令列引數之argparse

2021-10-24 21:46:38 字數 3051 閱讀 6445

一般使用 argparse 模組來解析命令列傳來的引數,argparse 是python自帶的命令列引數解析包,可以用來方便地讀取命令列引數。它的使用也比較簡單。

import argparse

parser = argparse.argumentparser(description=

"demo of argparse"

)parser.add_argument(

'-u'

,'--username'

, dest=

'username'

,type

=str

, default=

'亞索'

,help

='使用者名稱'

)parser.add_argument(

'-s'

,'--***'

, dest=

'***'

,type

=str

, choices=

['男'

,'女'

], default=

'男',

help

='性別'

)parser.add_argument(

'-a'

,'--age'

, dest=

'age'

,type

=int

,help

='年齡'

)args = parser.parse_args(

)print

(args)

username = args.username

*** = args.***

age = args.age

print

(username, ***, age)

輸出結果:

******x> python main.py -a 25

namespace(age=25, ***=

'男', username=

'亞索'

)亞索 男 25

******x> python main.py -u 瑞雯 -s 女 -a 16

namespace(age=16, ***=

'女', username=

'瑞雯'

)瑞雯 女 16

在上面的**中,我們先導入了argparse這個包,然後包中的argumentparser類生成乙個parser物件(好多部落格中把這個叫做引數解析器),其中的description描述這個引數解析器是幹什麼的,當我們在命令列顯示幫助資訊的時候會看到description描述的資訊。

接著我們通過物件的add_argument函式來增加引數。這裡我們增加了兩個引數username***age,其中'-u','--username'表示同乙個引數,default引數表示我們在執行命令時若沒有提供引數,程式會將此值當做引數值。執行結果如上所示。

最後採用物件的parse_args獲取解析的引數,由上圖可以看到,namespace中有兩個屬性(也叫成員)這裡要注意個問題,當'-''--'同時出現的時候,系統預設後者為引數名,前者不是,但是在命令列輸入的時候沒有這個區分接下來就是列印引數資訊了

當執行命令python fun_test.py -h可以檢視幫助資訊

***xx> python main.py -h

usage: main.py [-h]

[-u username]

[-s

][-a age]

demo of argparse

optional arguments:

-h, --help show this help message and exit

-u username, --username username

使用者名稱-s , --***

性別-a age, --age age 年齡

沒有設定值情況下的預設引數,default表示命令行沒有設定該引數的時候,程式中用什麼值來代替。

表示這個引數是否一定需要設定,如果設定了required=true,則在實際執行的時候不設定該引數將報錯

預設的引數型別是str型別,如果你的程式需要乙個整數或者布林型引數,你需要設定type=inttype=bool

引數值只能從幾個選項裡面選擇

在現實幫助資訊的時候,help引數的值可以給使用工具的人提供該引數是用來設定什麼的說明,對於大型的專案,help引數和很有必要的,不然使用者不太明白每個引數的含義,增大了使用難度。

設定引數在**中的變數名,argparse 預設的變數名是---後面的字串,但是你也可以通過dest=***來設定引數的變數名,然後在**中用args.***來獲取引數的值。

設定引數在使用可以提供的個數

使用方式如下:

parser.add_argument(

'-name'

, nargs=x)

其中x的候選值和含義如下:

值              含義

n 引數的絕對個數(例如:3)

'?' 0 或 1 個引數

'*' 0 或所有引數

'+' 所有,並且至少乙個引數

python解析命令列引數

使用乙個先進的模組名為argparse,跟unix程式的命令列引數很像。直接對code做個筆記 import sys import argparse def main args print first name directory s args.first name print first para...

解析命令列引數

include include include include int make argv const char astr,const char delimiters,char argvp void free argv char argvp int main int argc,char argv i...

Python的命令列引數解析

命令列引數解析在程式語言中基本都會碰到,python中內建了乙個用於命令項選項與引數解析的模組argparse。下面主要介紹兩種解析python命令列引數的方式。解析python中命令列引數的最傳統的方法是通過sys.argv。demo如下 usr env python python coding ...