电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python 如何利用argparse解析命令行參數

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

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

sys.argv

解析命令行傳入參數最簡單的辦法就是通過sys.argv,sys.argv可以獲取到我們通過命令行傳入的參數。

import sysprint(sys.argv)

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

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

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

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

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

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

基本用法

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

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

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

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

python 如何利用argparse解析命令行參數

必選參數

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

定義必選參數的方法非常簡單,我們只需要通過add_argument傳入參數的名稱就可以了。

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

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

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

python 如何利用argparse解析命令行參數

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

可選參數

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

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

我們運行-h可以發現optional arguments當中多了test和--test。

python 如何利用argparse解析命令行參數

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

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

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

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

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

python 如何利用argparse解析命令行參數

默認值

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

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參數的默認值設置成了1,當我們運行的時候,如果不填test這個參數的話,那么程序就會使用它的默認值也就是1。

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

type

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

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

想要做到這點也很簡單,通過type參數就可以實現。

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

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

python 如何利用argparse解析命令行參數

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

可選值

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

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

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

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

python 如何利用argparse解析命令行參數

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

action

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

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

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

python 如何利用argparse解析命令行參數

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

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

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

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

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

python 如何利用argparse解析命令行參數

nargs

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

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

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

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

python 如何利用argparse解析命令行參數

總結

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

以上就是python 如何利用argparse解析命令行參數的詳細內容,更多關于python 解析命令行的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 美国HASKEL增压泵-伊莱科elettrotec流量开关-上海方未机械设备有限公司 | 球磨机 选矿球磨机 棒磨机 浮选机 分级机 选矿设备厂家 | POM塑料_PBT材料「进口」聚甲醛POM杜邦原料、加纤PBT塑料报价格找利隆塑料 | 常州企业采购平台_常州MRO采购公司_常州米孚机电设备有限公司 | 金属检测机_金属分离器_检针验针机_食品药品金属检探测仪器-广东善安科技 | 合肥仿石砖_合肥pc砖厂家_合肥PC仿石砖_安徽旭坤建材有限公司 | 不锈钢丸厂家,铝丸,铸钢丸-淄博智源铸造材料有限公司 | 半自动预灌装机,卡式瓶灌装机,注射器灌装机,给药器灌装机,大输液灌装机,西林瓶灌装机-长沙一星制药机械有限公司 | 涡轮流量计_LWGY智能气体液体电池供电计量表-金湖凯铭仪表有限公司 | 执业药师报名时间,报考条件,考试时间-首页入口 | 光纤测温-荧光光纤测温系统-福州华光天锐光电科技有限公司 | 附着力促进剂-尼龙处理剂-PP处理剂-金属附着力处理剂-东莞市炅盛塑胶科技有限公司 | 北京工业设计公司-产品外观设计-产品设计公司-千策良品工业设计 北京翻译公司-专业合同翻译-医学标书翻译收费标准-慕迪灵 | 医院专用门厂家报价-医用病房门尺寸大全-抗菌木门品牌推荐 | 石家庄网站建设|石家庄网站制作|石家庄小程序开发|石家庄微信开发|网站建设公司|网站制作公司|微信小程序开发|手机APP开发|软件开发 | 钛合金标准件-钛合金螺丝-钛管件-钛合金棒-钛合金板-钛合金锻件-宝鸡远航钛业有限公司 | 深圳法律咨询【24小时在线】深圳律师咨询免费 | 高温高压釜(氢化反应釜)百科| 杰恒蠕动泵-蠕动泵专业厂家-19年专注蠕动泵 | 上海电子秤厂家,电子秤厂家价格,上海吊秤厂家,吊秤供应价格-上海佳宜电子科技有限公司 | 塑钢件_塑钢门窗配件_塑钢配件厂家-文安县启泰金属制品有限公司 深圳南财多媒体有限公司介绍 | 光伏支架成型设备-光伏钢边框设备-光伏设备厂家 | COD分析仪|氨氮分析仪|总磷分析仪|总氮分析仪-圣湖Greatlake | 蓄电池回收,ups电池后备电源回收,铅酸蓄电池回收,机房电源回收-广州益夫铅酸电池回收公司 | 网带通过式抛丸机,,网带式打砂机,吊钩式,抛丸机,中山抛丸机生产厂家,江门抛丸机,佛山吊钩式,东莞抛丸机,中山市泰达自动化设备有限公司 | 河南新乡德诚生产厂家主营震动筛,振动筛设备,筛机,塑料震动筛选机 | 校园文化空间设计-数字化|中医文化空间设计-党建|法治廉政主题文化空间施工-山东锐尚文化传播公司 | 政府回应:200块在义乌小巷能买到爱情吗?——揭秘打工族省钱约会的生存智慧 | 北京工业设计公司-产品外观设计-产品设计公司-千策良品工业设计 北京翻译公司-专业合同翻译-医学标书翻译收费标准-慕迪灵 | 沈飞防静电地板__机房地板-深圳市沈飞防静电设备有限公司 | 东莞动力锂电池保护板_BMS智能软件保护板_锂电池主动均衡保护板-东莞市倡芯电子科技有限公司 | 药品冷藏箱厂家_低温冰箱_洁净工作台-济南欧莱博电子商务有限公司官网 | 澳威全屋定制官网|极简衣柜十大品牌|衣柜加盟代理|全屋定制招商 百度爱采购运营研究社社群-店铺托管-爱采购代运营-良言多米网络公司 | 我爱古诗词_古诗词名句赏析学习平台 | 三板富 | 专注于新三板的第一垂直服务平台 | 派财经_聚焦数字经济内容服务平台| 丙烷/液氧/液氮气化器,丙烷/液氧/液氮汽化器-无锡舍勒能源科技有限公司 | 注塑模具_塑料模具_塑胶模具_范仕达【官网】_东莞模具设计与制造加工厂家 | 数控专用机床,专用机床,自动线,组合机床,动力头,自动化加工生产线,江苏海鑫机床有限公司 | 压力喷雾干燥机,喷雾干燥设备,柱塞隔膜泵-无锡市闻华干燥设备有限公司 | 土壤肥料养分速测仪_测土配方施肥仪_土壤养分检测仪-杭州鸣辉科技有限公司 |