python中argparse模塊及action='store_true'詳解
Python argparse模塊詳解
argparse 是一個用來解析命令行參數(shù)的 Python 庫,它是 Python 標(biāo)準(zhǔn)庫的一部分。基于 python 2.7 的 stdlib 代碼。argparse 模塊使編寫用戶友好的命令行界面變得容易。程序定義了所需的參數(shù),而 argparse 將找出如何從 sys.argv 中解析這些參數(shù)。argparse 模塊還會自動生成幫助和使用消息,并在用戶為程序提供無效參數(shù)時發(fā)出錯誤。
1. 問題描述
經(jīng)常煉丹的朋友對下面這段代碼非常熟悉。
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é)
2. add_argument() 方法官方介紹
在這個方法中,
ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
其中
action - 當(dāng)參數(shù)在命令行中出現(xiàn)時使用的動作基本類型。
詳細(xì)來講,就是
action
ArgumentParser 對象將命令行參數(shù)與動作相關(guān)聯(lián)。這些動作可以做與它們相關(guān)聯(lián)的命令行參數(shù)的任何事,盡管大多數(shù)動作只是簡單的向
parse_args() 返回的對象上添加屬性。action 命名參數(shù)指定了這個命令行參數(shù)應(yīng)當(dāng)如何處理。供應(yīng)的動作有:
'store' - 存儲參數(shù)的值。這是默認(rèn)的動作。
3. 實例測試與對比
step01
用實例來講:
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'
程序可以運行,但是我們可以看到,值出現(xiàn)了變化

money這里變成了none。
一步一步來。
step03:store后面是否可以自定義?

代碼變紅了,我還以為可以。實際上不行。

step04:為什么我的輸出值為None?

修改了賦值語句之后,可以取到值。

但是對比可以得到, 取值時候需要加入索引。
parser.parse_args(['-m'])
step05 理解store_true,store_false
這個時候我們再回頭來看,就很清晰了,就是給參數(shù)賦值為true和false。
準(zhǔn)確描述為:“當(dāng)帶有store_true時,你傳入對應(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)用中呢?
看實例
def testArgparse():
parser = argparse.ArgumentParser(description = 'Argparse Demo.')
parser.add_argument('-t', '--tag', action='store_true', help='是否能夠運行')
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的時候,

這些就非常明確了。
到此這篇關(guān)于python中argparse模塊,action=‘store_true‘的文章就介紹到這了,更多相關(guān)python中argparse模塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MediaPipe API實現(xiàn)骨骼識別功能分步講解流程
MediaPipe是用于構(gòu)建多模態(tài)(例如視頻、音頻或任何時間序列數(shù)據(jù))、跨平臺(即eAndroid、IOS、web、邊緣設(shè)備)應(yīng)用ML管道的框架。這篇文章主要介紹了MediaPipe API實現(xiàn)骨骼識別功能分步流程2022-09-09
Python打包工具PyInstaller的安裝與pycharm配置支持PyInstaller詳細(xì)方法
這篇文章主要介紹了Python打包工具PyInstaller的安裝與pycharm配置支持PyInstaller詳細(xì)方法,需要的朋友可以參考下2020-02-02
python list count統(tǒng)計個數(shù)的實現(xiàn)
這篇文章主要介紹了python list count統(tǒng)計個數(shù)的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02
Python+SeaTable實現(xiàn)生成條形碼圖片并寫入表格
不管是錄入信息時需要用掃碼器掃碼錄入,還是有別的生成條形碼的需要,這在?SeaTable?表格中用?Python?腳本就可以輕松實現(xiàn),本文就來為大家詳細(xì)講解一下2022-07-07
tesseract庫及訓(xùn)練數(shù)據(jù)下載安裝方式
這篇文章主要介紹了tesseract庫及訓(xùn)練數(shù)據(jù)下載安裝方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
Python實現(xiàn)對大量表格文件數(shù)據(jù)處理的方法詳解
這篇文章主要為大家介紹了如何基于Python語言實現(xiàn)對大量表格文件加以數(shù)據(jù)截取、逐行求差、跨文件合并等處理,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-05-05
解決windows下Sublime Text 2 運行 PyQt 不顯示的方法分享
問題描述:PyQt 環(huán)境正常,可以使用 Windows 的 虛擬 DOS 正常運行,但在 Sublime Text 2 下使用 Ctrl + B 運行后,界面不顯示,但查看任務(wù)管理器,有 python.exe 進(jìn)程。2014-06-06

