網(wǎng)站首頁 編程語言 正文
Python argparse模塊詳解
argparse 是一個(gè)用來解析命令行參數(shù)的 Python 庫,它是 Python 標(biāo)準(zhǔn)庫的一部分。基于 python 2.7 的 stdlib 代碼。argparse 模塊使編寫用戶友好的命令行界面變得容易。程序定義了所需的參數(shù),而 argparse 將找出如何從 sys.argv 中解析這些參數(shù)。argparse 模塊還會(huì)自動(dòng)生成幫助和使用消息,并在用戶為程序提供無效參數(shù)時(shí)發(fā)出錯(cuò)誤。
1. 問題描述
經(jīng)常煉丹的朋友對(duì)下面這段代碼非常熟悉。
parser = argparse.ArgumentParser() parser.add_argument('-c','--clean',action='store_true') parser.add_argument('-r','--run',action='store_true') config = parser.parse_args()
然后問題來了,action他的意義在這里是什么?
我去查了查資料,簡(jiǎn)單的做個(gè)總結(jié)
2.?add_argument() 方法官方介紹
在這個(gè)方法中,
ArgumentParser.
add_argument
(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
其中
action?- 當(dāng)參數(shù)在命令行中出現(xiàn)時(shí)使用的動(dòng)作基本類型。
詳細(xì)來講,就是
action
ArgumentParser?對(duì)象將命令行參數(shù)與動(dòng)作相關(guān)聯(lián)。這些動(dòng)作可以做與它們相關(guān)聯(lián)的命令行參數(shù)的任何事,盡管大多數(shù)動(dòng)作只是簡(jiǎn)單的向?
parse_args()?返回的對(duì)象上添加屬性。action
?命名參數(shù)指定了這個(gè)命令行參數(shù)應(yīng)當(dāng)如何處理。供應(yīng)的動(dòng)作有:
'store'
?- 存儲(chǔ)參數(shù)的值。這是默認(rèn)的動(dòng)作。
3. 實(shí)例測(cè)試與對(duì)比?
step01
用實(shí)例來講:
def testArgparse(): parser = argparse.ArgumentParser(description = 'Argparse Demo.') parser.add_argument('-n', '--name', default = 'Lee') parser.add_argument('-m', '--money', default = '80W') args = parser.parse_args() print(' This content is ', args) name = args.name money = args.money print(' Shuai ge is {}, ta yi nian {}!'.format(name, money)) if __name__ == '__main__': testArgparse()
輸出的結(jié)果為:
step 02?
?接下來我們引入 store。
def testArgparse(): parser = argparse.ArgumentParser(description = 'Argparse Demo.') parser.add_argument('-n', '--name', default = 'Lee') parser.add_argument('-m', '--money', action='store_const', const = '80W') args = parser.parse_args() print(' This content is ', args) name = args.name money = args.money print(' Shuai ge is {}, ta yi nian {}!'.format(name, money)) if __name__ == '__main__': testArgparse()
注意,我在這里增加了
action='store_const', const = '80W'
替換了原來的
default = '80w'
程序可以運(yùn)行,但是我們可以看到,值出現(xiàn)了變化
money這里變成了none。
一步一步來。
step03:store后面是否可以自定義?
?代碼變紅了,我還以為可以。實(shí)際上不行。
step04:為什么我的輸出值為None?
修改了賦值語句之后,可以取到值。
但是對(duì)比可以得到,?取值時(shí)候需要加入索引。
parser.parse_args(['-m'])
step05 理解store_true,store_false
這個(gè)時(shí)候我們?cè)倩仡^來看,就很清晰了,就是給參數(shù)賦值為true和false。
準(zhǔn)確描述為:“當(dāng)帶有store_true時(shí),你傳入對(duì)應(yīng)參數(shù),則觸發(fā)為真,否則為假。”
>>> parser = argparse.ArgumentParser() >>> parser.add_argument('--foo', action='store_true') >>> parser.add_argument('--bar', action='store_false') >>> parser.add_argument('--baz', action='store_false') >>> parser.parse_args('--foo --bar'.split()) Namespace(foo=True, bar=False, baz=True)
那在我們具體應(yīng)用中呢?
看實(shí)例
def testArgparse(): parser = argparse.ArgumentParser(description = 'Argparse Demo.') parser.add_argument('-t', '--tag', action='store_true', help='是否能夠運(yùn)行') parser.add_argument('-n', '--name', default = 'Lee') parser.add_argument('-m', '--money', action='store_const', const = '80W') args = parser.parse_args() print(' This content is ', args) name = args.name #money = args.money money = parser.parse_args(['-m']) tag= args.tag print(tag,int(tag)) print(' Shuai ge is {}, ta yi nian {}!'.format(name, money)) if __name__ == '__main__': testArgparse()
當(dāng)我們調(diào)用為true的時(shí)候,
這些就非常明確了。?
原文鏈接:https://blog.csdn.net/qq_33083551/article/details/123275512
相關(guān)推薦
- 2022-07-02 C語言細(xì)致講解線程同步的集中方式_C 語言
- 2022-02-12 Property 'fromEvent' does not exist on type 'typeo
- 2022-07-08 Python數(shù)據(jù)分析之使用matplotlib繪制折線圖、柱狀圖和柱線混合圖_python
- 2024-01-27 解決“該項(xiàng)目不在請(qǐng)確認(rèn)該項(xiàng)目位置,然后重試” 文件無法刪除問題
- 2022-04-09 SpringBoot默認(rèn)日志框架(slf4j)的使用以及配置文件
- 2022-09-08 python輾轉(zhuǎn)相除法求最大公約數(shù)和最小公倍數(shù)的實(shí)現(xiàn)_python
- 2022-11-05 Swift?Extension擴(kuò)展得使用詳細(xì)介紹_Swift
- 2022-12-05 一文深入了解Python中的繼承知識(shí)點(diǎn)_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支