日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

python 如何利用argparse解析命令行參數(shù)

瀏覽:22日期:2022-07-11 14:10:15

命令行參數(shù)工具是我們非常常用的工具,比如當我們做實驗希望調(diào)節(jié)參數(shù)的時候,如果參數(shù)都是通過硬編碼寫在代碼當中的話,我們每次修改參數(shù)都需要修改對應的代碼和邏輯顯然這不太方便。比較好的辦法就是把必要的參數(shù)設(shè)置成通過命令行傳入的形式,這樣我們只需要在運行的時候修改參數(shù)就可以了。

sys.argv

解析命令行傳入?yún)?shù)最簡單的辦法就是通過sys.argv,sys.argv可以獲取到我們通過命令行傳入的參數(shù)。

import sysprint(sys.argv)

用法很簡單,只需要調(diào)用sys.argv即可。argv是一個數(shù)組,如果參數(shù)有多個,我們可以通過下標進行訪問。但是有一點需要注意,argv當中存儲的結(jié)果是從Python調(diào)用開始的。

我們來看一個例子,我們隨意傳入一些參數(shù),print sys.argv之后是這樣的。

python test.py -a -c -d=222 >>> [’test.py’, ’-a’, ’-c’, ’-d=222’]

也就是說我們python運行test.py這個文件名也當做參數(shù)之一,所以我們要獲取自定義參數(shù)的話需要從argv[1]開始。

sys.argv的好處是方便,我們只需要訪問它就可以拿到傳入的參數(shù)了。但是缺點也很明顯,就是功能太少了。假如我們是看其他大神的代碼,我們想要知道運行的時候需要傳入什么參數(shù),以及每個參數(shù)代表什么含義就做不到了。

為了解決這個問題,我們需要使用封裝更多功能的工具,也是本篇文章的核心——argparse。

基本用法

argparse是Python當中的一個庫,我們需要先import一下,這個庫我沒記錯應該是Python自帶的,也不需要安裝,我們直接就可以使用。

在我們使用之前,我們需要先初始化這個parse,也就是一個參數(shù)解析器。

# 這里ArgumentParser可以傳入一個字符串,表示用途parser = argparse.ArgumentParser()parser.parse_args()

這個時候其實就已經(jīng)有了一個解析器了,我們在運行的時候可以傳入?yún)?shù)-h,表示help,也就是查看目前解析器當中定義的參數(shù)。由于我們現(xiàn)在什么也沒有,所以能顯示出來的就只有help。

python 如何利用argparse解析命令行參數(shù)

必選參數(shù)

首先我們來介紹必選參數(shù),它的定義和函數(shù)當中的必填參數(shù)是一樣的,也就是說我們運行程序必須要的參數(shù)。如果不傳,那么程序不應該執(zhí)行會進行報錯并提示。

定義必選參數(shù)的方法非常簡單,我們只需要通過add_argument傳入?yún)?shù)的名稱就可以了。

import argparseparser = argparse.ArgumentParser('For test the parser')parser.add_argument(’test’)args = parser.parse_args()print(args.test)

這樣我們就定義了一個名叫test的參數(shù),我們可以通過args.test來訪問它。

這個時候我們再運行python test.py -h就會發(fā)現(xiàn)提示的信息當中多了一行:

python 如何利用argparse解析命令行參數(shù)

告訴我們必選參數(shù)當中有test,必選參數(shù)直接傳入,不需要加上前綴。所以我們執(zhí)行的時候直接python test.py xxx就可以了。

可選參數(shù)

有必選參數(shù)當然就有可選參數(shù),可選參數(shù)由于可選可不選, 所以我們在使用的時候需要在參數(shù)前加上標識-或者--。比如我們參數(shù)名叫做test,可以定義成-test或者--test,這兩種都可以,也可以這兩種都定義。

parser.add_argument(’-test’, ’--test’)

我們運行-h可以發(fā)現(xiàn)optional arguments當中多了test和--test。

python 如何利用argparse解析命令行參數(shù)

但是這個只print出來了參數(shù)名,并沒有告訴我們這個參數(shù)究竟是做什么的,像是help參數(shù)后面就跟了show this help message and exit這個提示語。如果我們也希望help能夠提示我們參數(shù)的作用怎么辦呢?

我們可以通過help參數(shù)傳入我們希望打印出來的提示語,這樣方便使用者在使用的時候了解參數(shù)的情況。

比如我們把這行語句改成:

parser.add_argument(’-test’, ’--test’, help=’just for help’)

這樣當我們運行的時候,就會看到提示語了:

python 如何利用argparse解析命令行參數(shù)

默認值

如果參數(shù)很多的時候,我們有時候可能不希望每一個都指定一個值,而是希望可以在不填的時候有一個默認值。這個想法非常正常,想要做到這點也很簡單,我們可以通過default參數(shù)來指定。

import argparseparser = argparse.ArgumentParser('For test the parser')parser.add_argument(’-test’, ’--test’, default=1, help=’just for help’)args = parser.parse_args()print(args.test)

比如這樣我們在代碼當中把test參數(shù)的默認值設(shè)置成了1,當我們運行的時候,如果不填test這個參數(shù)的話,那么程序就會使用它的默認值也就是1。

但有一點默認值的信息并不會print在help當中,所以我們需要自己在提示語當中告知使用者默認值是多少。

type

我們可以定義參數(shù)的默認值,當然也可以定義它的類型。

因為命令行傳入的參數(shù)默認都是字符串,如果我們要進行數(shù)學上的計算,使用str還需要自己轉(zhuǎn)換,這就很不方便。我們可以在傳入?yún)?shù)的時候就完成類型的匹配,這樣如果傳入?yún)?shù)的類型不對, 那么直接報錯,不往下運行。

想要做到這點也很簡單,通過type參數(shù)就可以實現(xiàn)。

parser.add_argument(’-test’, ’--test’, default=1, type=int, help=’just for help’)

比如當我們定義了一個int型的參數(shù),而傳入的是類型不匹配的話,那么就會引起報錯:

python 如何利用argparse解析命令行參數(shù)

報錯信息當中寫得很清楚,我們得到了一個無效的int的值,它是abc。

可選值

它同樣還支持可選值,可選值很好理解,就是我們希望限定傳入?yún)?shù)的范圍僅僅在幾個值當中。比如說我們希望傳入的值不是0就是1,或者是在某幾個具體的值當中,這個時候我們可以通過choices參數(shù)來實現(xiàn)這一點。

choices參數(shù)傳入的是一個list,也就是我們的限定范圍,只有在這個范圍當中的值才被允許。

parser.add_argument(’-test’, ’--test’, default=1, choices=[2, 3, 4], type=int, help=’just for help’)

如果我們運行傳入test=1,那么就會引起報錯,告訴我們傳入的值不在choices范圍當中。

python 如何利用argparse解析命令行參數(shù)

這是一個挺有意思的例子,仔細看會發(fā)現(xiàn)我們默認值設(shè)置成了1,但是可選值當中并沒有1。這也是允許的,默認值可以不在可選值范圍內(nèi),但是當我們傳入1就會觸發(fā)可選值校驗。

action

action是一個很神奇也很有用的操作,可以指定參數(shù)的處理方式。我們默認的方式是store,也就是存儲的意思,這個我們都能理解。除此之外,還有store_true,它表示出現(xiàn)則是true,否則是false。

parser.add_argument(’-test’, ’--test’, action=’store_true’, help=’just for help’)

當我們把test參數(shù)的定義改成這樣之后,我們來對比一下運行的結(jié)果就明白了。

python 如何利用argparse解析命令行參數(shù)

除了store_true之外還有store_const,也就是說出現(xiàn)就指定為一個固定值。

parser.add_argument(’-test’, ’--test’, action=’store_const’, const=23, help=’just for help’)

這樣當我們指定-test參數(shù)之后,它會自動被賦值成23。

除了這兩個之外,另外一個很常用的參數(shù)是append,可以將多次出現(xiàn)的同一個參數(shù)自動存入一個list當中。

parser.add_argument(’-test’, ’--test’, action=’append’, type=int, help=’just for help’)

python 如何利用argparse解析命令行參數(shù)

nargs

nargs也是一個非常有用的參數(shù),可以對參數(shù)進行一些花式操作。nargs的傳入?yún)?shù)有以下幾種,首先是N,也就是一個整數(shù)。代表可以接收N個參數(shù)值,這N個值會被存入一個list當中。

parser.add_argument(’-test’, ’--test’, nargs=2, type=int, help=’just for help’)

另外一種傳入的參數(shù)是’+’或者是’*’,它可以將任意多個值存入一個list當中。

parser.add_argument(’-test’, ’--test’, nargs=’*’, type=int, help=’just for help’)

python 如何利用argparse解析命令行參數(shù)

總結(jié)

有了parser之后,我們在Python當中處理命令行參數(shù)會變得非常簡單,我們可以做各種各樣的定制化操作。除了我們上面介紹的之外,還有一些其他的做法,相對來說不是非常常用,所以就不一一窮盡了,感興趣的同學可以自行了解一下。

以上就是python 如何利用argparse解析命令行參數(shù)的詳細內(nèi)容,更多關(guān)于python 解析命令行的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产综合婷婷| 日韩在线免费| 日韩中文欧美在线| 日韩午夜av在线| 欧美日韩日本国产亚洲在线| 欧美特黄a级高清免费大片a级| 国产99精品一区| 亚洲电影在线一区二区三区| 不卡av一区二区| 99日韩精品| 性欧美69xoxoxoxo| 亚洲免费一区二区| 综合亚洲视频| 欧美一级二区| 免费精品一区| 国产精品伦理久久久久久| 国产精品伦理久久久久久| 999国产精品视频| 欧美91视频| 石原莉奈在线亚洲二区| 日本不卡视频在线| 国产极品模特精品一二| 精品国产乱码久久久久久樱花| 亚洲黄色中文字幕| 夜久久久久久| 日韩中文字幕av电影| 欧美天堂一区二区| 岛国av在线网站| 欧美日韩第一| 日韩二区在线观看| 色婷婷综合网| 夜夜嗨网站十八久久| 色综合视频一区二区三区日韩| 国产欧美午夜| 最新中文字幕在线播放| 鲁大师成人一区二区三区 | 国产aⅴ精品一区二区三区久久| 久久女人天堂| 色综合五月天| 国产精品丝袜xxxxxxx| 国产欧美日韩一区二区三区四区| 久久精品国产成人一区二区三区| 欧洲av一区二区| 亚洲精品精选| 精品国产亚洲日本| 欧美日韩国产探花| 青青草伊人久久| 欧美aa一级| 深夜福利一区| 麻豆网站免费在线观看| 亚洲专区在线| 久久精品伊人| 欧美日韩视频一区二区三区| 欧美在线精品一区| 久久免费国产| 国产日韩欧美| 国产一区亚洲| 麻豆免费精品视频| 一区二区三区网站| 成人午夜精品| 日本va欧美va精品| 亚洲国产专区校园欧美| 国产精品一区二区av日韩在线 | 中文一区一区三区高中清不卡免费| 国产精品视区| 电影91久久久| 欧美综合二区| 亚洲人成在线网站| 国产麻豆一区| 99热精品在线观看| а√天堂8资源在线| 一区二区国产在线| 99精品在线观看| 国产精品66| 亚洲精品进入| 婷婷综合五月| 国产精品蜜芽在线观看| 日韩国产欧美一区二区三区| 999国产精品视频| 精品欧美日韩精品| 91成人精品在线| 亚洲激情av| 日韩免费久久| 国产在线一区不卡| 国产精品亚洲片在线播放| 香蕉精品999视频一区二区| 国产白浆在线免费观看| 国产欧美丝祙| 日韩国产欧美在线视频| 香蕉久久久久久久av网站| 亚洲91视频| 国产成人精品一区二区三区免费| 欧美伊人影院| 日韩三级视频| 亚洲久草在线| 日韩中文欧美在线| 欧美69视频| 久久三级视频| 伊人久久国产| 国产 日韩 欧美 综合 一区| 国产日韩精品视频一区二区三区| 香蕉久久一区| 亚洲精品伦理| 色8久久久久| 亚洲精品在线a| 三级一区在线视频先锋| 夜久久久久久| 国产色综合网| 中国女人久久久| 欧美日韩第一| 亚洲精品成人| 激情综合自拍| 婷婷丁香综合| 亚洲精品888| 日韩视频二区| 亚洲在线免费| 免费精品视频最新在线| 三级在线观看一区二区| 亚洲三级毛片| 7m精品国产导航在线| 日韩影片在线观看| 日韩av网站免费在线| 啪啪亚洲精品| 国产日韩欧美一区| 精品国产一区二区三区噜噜噜| 精品资源在线| 精品国产精品国产偷麻豆| 精品视频高潮| 国产资源在线观看入口av| 欧美精品资源| 亚洲欧美一区在线| 亚洲欧美日本国产专区一区| 在线看片一区| 国产亚洲电影| 久久精品五月| 日韩精品永久网址| 亚洲精品va| 亚洲精品国模| 国产精品扒开腿做爽爽爽软件| 麻豆精品在线播放| 伊人久久在线| 亚洲www啪成人一区二区| 亚洲先锋成人| 蜜臀久久99精品久久久画质超高清 | 国产不卡一区| 99久久久国产精品美女| 亚洲欧洲一区| 青草久久视频| 国产不卡av一区二区| 久久男人av资源站| 香蕉人人精品| 视频一区二区中文字幕| 国产亚洲一区二区三区啪| 久久久免费人体| 日本久久成人网| 蜜桃一区二区三区在线观看| 国产精品一卡| 久久精品1区| 综合激情婷婷| 国产精品**亚洲精品| 欧美精品高清| 亚洲精品人人| 成人一二三区| 日韩专区欧美专区| 国产精品草草| 久久精品青草| 日韩精品免费视频人成| 精品亚洲免a| 影音先锋久久| 国产精品sss在线观看av| 免费高潮视频95在线观看网站| 久久亚洲风情| 精品国产乱码久久久久久樱花| 九一精品国产| 18国产精品| 久久香蕉国产| 欧美日韩调教| 亚洲一级二级| 国产精品一级| 亚洲婷婷在线| 国产欧美欧美| 不卡视频在线| 免费日韩一区二区三区| 国产精品毛片| 国产成人精品一区二区三区在线| 免费国产自线拍一欧美视频| 老色鬼精品视频在线观看播放| 午夜精品影院| 精品免费av| 蜜桃av一区二区| www.com.cn成人| 日本成人在线一区| 九九久久电影| 国产成人精品福利| 亚洲另类av| 亚洲高清毛片| 精品国产亚洲一区二区在线观看| 麻豆久久精品| 久久久一本精品| 麻豆精品在线观看|