<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
argparse是Python的一個標準模組,用於解析命令列引數,即解析sys.argv中定義的引數。實現在:傳送門
argparse模組還會自動生成幫助和使用資訊,即在最後加-h或--help。當用戶輸入的引數無效時,會觸發error,並給出出錯原因。
python test_argparse.py -h python test_argparse.py --help
使用argparse的步驟:
1.建立解析器:argparse.ArgumentParser(),ArgumentParser是個class,構造它時有很多引數可以指定,若不指定這些引數都使用預設值,如description=None:此python程式功能的描述;add_help=True:新增-h/--help選項
parser = argparse.ArgumentParser(description="test argparse's use", add_help=True)
2.新增引數:parser.add_argument(*args, **kwargs):*args允許函數接受任意數量的位置引數(positional arguments),**kwargs允許函數接受任意數量的關鍵字引數。Python不允許位置引數跟在關鍵字引數之後。
(1).name or flags:一個名字,位置引數(positional arguments),不帶有"-"或"--",如foo;一個可選字串的列表,如-f, --foo。當parse_args()被呼叫時,可選引數會以"-"字首識別,剩下的引數則會被假定為位置引數。
parser.add_argument("integers", metavar="N", type=int, nargs="+", help="an integer for the accumulator") # positional argument parser.add_argument("--sum", dest="accumulate", action="store_const", const=sum, default=max, help="sum the integers(default: find the max)") # optional argument args = parser.parse_args() print(args.accumulate(args.integers)) # print either the sum or the max of the command-line integers
(2).action:ArgumentParser物件將命令列引數與action相關聯。這些action可以做與它們相關聯的命令列引數的任何事,儘管大多數action只是簡單的向parse_args()返回的物件上新增一個屬性。action關鍵字引數指定應如何處理命令列引數。預設的action是"store",儲存引數的值。
(3).nargs:此關鍵字引數將不同數量的命令列引數與單個操作相關聯。
"?":如果不存在命令列引數,則會使用default值;還有一種情況,"-"選項字串存在,但後面沒有跟著命令列引數,則會使用const值。
"*":所有命令列引數都收集到一個列表中。
"+":與"*"類似,但至少存在一個命令列引數,否則會產生錯誤訊息。
parser.add_argument('--foo', nargs='?', const='c', default='d') args = parser.parse_args() print(args.foo) # print 'c' or 'd' or command-line input
(4).const:此關鍵字引數用於儲存不是從命令列中讀取但被各種ArgumentParser操作所需的常數值。對'store_const'和'append_const' action,const關鍵字引數必須給出;對其它action,預設為None。
(5).default:此關鍵字引數用於在命令列引數不存在應使用的值,預設值為None。
(6).type:此關鍵字引數允許執行任何必要的型別檢查和型別轉換。
(7).choices:某些命令列引數應當從一組受限值中選擇,這些可以通過將容器物件作為choices關鍵字引數傳遞給add_argument()來處理。當執行命令列解析時,引數值將被檢查,如果引數不是可接受的值之一將觸發錯誤訊息。
parser.add_argument('addr', type=str, choices=['csdn', 'github']) args = parser.parse_args() print("addr:", args.addr)
(8).required:通常,argparse模組假定"-f"和"--bar"等標誌表示可選引數,在命令列中始終可以省略這些引數。要讓一個選項成為必需的,則可以將required關鍵字引數指定為True。
(9).help:包含引數簡短描述的字串。通常在命令列中使用-h或--help時,這些help描述將與每個引數一起顯示。
(10).metavar:當ArgumentParser生成幫助訊息時,它需要某種方式來參照每個預期的引數。預設情況下,ArgumentParser物件使用dest值作為每個物件的"name"。預設情況下,對於位置引數action,直接使用dest值,對於可選引數action,dest值是大寫的。可以使用metavar來指定一個替代名稱。
parser.add_argument('--foo') parser.add_argument('--bar', metavar='XXX') args = parser.parse_args()
(11).dest:大多數ArgumentParser操作都會新增一些值作為parse_args()返回的物件的一個屬性。此屬性的名稱由add_argument()的dest關鍵字引數確定。
3.解析引數:parser.parse_args(),將引數字串轉換為物件並將其設為名稱空間的屬性,返回帶有成員的名稱空間。
更多介紹參考:傳送門
到此這篇關於Python argparse模組實現解析命令列引數方法詳解的文章就介紹到這了,更多相關Python argparse模組 內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45