天天看點

argparse的基本用法

主要參考了網上的一些博文,在複現醫學圖像分割的深度學習論文的時候,發現師兄很喜歡用這個函數,一開始還不是很了解,是以今天來徹底弄明白到底是個啥東西。

定義&用途

argparse是python自帶的指令行參數解析包,可以用來友善地讀取指令行參數,使用比較簡單。

基本架構

采用argparse擷取使用者的名字及年齡,因為比較簡單是以是在linux上用vim編輯器寫的python檔案,檔案命名為:test.py。

import argparse

def main():
	p = argparse.ArgumentParser("description="Demo of argparse"")
	p.add_argument('-n', '--name', default='Li')
	p.add_argument('-y', '-year', default='20')
	args = p.parse_args()
	print(args)
	name = p.name
	year = args.year
	print('Hello {} {}'.format(name, year))

if __name__ == "__main__":
	main()
           

寫好後儲存退出,執行指令:

python test.py
           

結果如下:

argparse的基本用法

  1. 在上面的代碼中,我們首先是導入了一個名為

argparse

的包,然後使用了argparse包中的一個類

ArgumentParser

生成了一個

parser

對象(參數解析器),即

p

。其中,

description

是用來描述這個參數解析器的用途,當在指令行顯示幫助資訊的時候會看到description描述的資訊。

  2. 接着我們使用對象的

add_argument

方法來增加參數。在這段代碼中我們增加了兩個參數

name

year

,其中

-n

--name

表示同一個參數,

default

表示我們在運作指令的時候如果沒有提供參數,程式會将此值當作參數值。

  3. 最後采用對象的

parse_args

方法擷取解析的參數,由結果圖可以看到,

Namespace

中有兩個屬性(或者說成員)。

P.S. 當

'-'

'--'

同時出現的時候,系統預設後者為參數名,前者不是,但是在指令行輸入的時候沒有這個區分。

當執行指令:

結果如下圖:

argparse的基本用法

本文主要參考argparse基本用法