溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python?argparse模塊傳參怎么使用

發(fā)布時(shí)間:2022-06-02 11:09:31 來源:億速云 閱讀:203 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要講解了“python argparse模塊傳參怎么使用”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“python argparse模塊傳參怎么使用”吧!

傳入一個(gè)參數(shù)

我們先在桌面新建“arg學(xué)習(xí)”的文件夾,在該文件夾中新建demo.py文件,來看一個(gè)最簡(jiǎn)單的argsparse庫(kù)的使用的例子。

import argparse
parser = argparse.ArgumentParser(description='命令行中傳入一個(gè)數(shù)字')
#type是要傳入的參數(shù)的數(shù)據(jù)類型  help是該參數(shù)的提示信息
parser.add_argument('integers', type=str, help='傳入的數(shù)字')
args = parser.parse_args()
#獲得傳入的參數(shù)
print(args)

在這個(gè)代碼中,我們?cè)诿钚袀魅胍粋€(gè)數(shù)字。使用方法是打開命令行,先將工作目錄cd到arg學(xué)習(xí)

cd desktop/arg學(xué)習(xí)

然后再命令行中輸入python demo.py -h或者python demo.py --help, 這里我輸入的是

python demo.py -h

在命令行中看到demo.py的運(yùn)行結(jié)果如下

usage: demo.py [-h] integers
命令行中傳入數(shù)字
positional arguments:
  integers    傳入的數(shù)字
optional arguments:
  -h, --help  show this help message and exit

現(xiàn)在我們?cè)诿钚兄薪odemo.py 傳入一個(gè)參數(shù)5,

python demo.py 5

運(yùn)行,得到的運(yùn)行結(jié)果是

Namespace(integers='5')

操作args字典

其實(shí)得到的這個(gè)結(jié)果Namespace(integers='5')是一種類似于python字典的數(shù)據(jù)類型。

我們可以使用 arg.參數(shù)名來提取這個(gè)參數(shù)

import argparse
parser = argparse.ArgumentParser(description='命令行中傳入一個(gè)數(shù)字')
#type是要傳入的參數(shù)的數(shù)據(jù)類型  help是該參數(shù)的提示信息
parser.add_argument('integers', type=str, help='傳入的數(shù)字')
args = parser.parse_args()
#獲得integers參數(shù)
print(args.integers)

在命令行中運(yùn)行 python demo.py 5 , 運(yùn)行結(jié)果為

5

傳入多個(gè)參數(shù)

現(xiàn)在在命令行中給demo.py 傳入多個(gè)參數(shù),例如傳入1,2,3,4四個(gè)數(shù)字

python demo.py 1 2 3 4

運(yùn)行報(bào)錯(cuò)

usage: demo.py [-h] integers 
demo.py: error: unrecognized arguments: 2 3 4

不能識(shí)別2 3 4,看源代碼我們知道integers這個(gè)參數(shù)是位置參數(shù),說明第一個(gè)數(shù)1是能識(shí)別。這里我們需要重新更改demo.py代碼

import argparse
parser = argparse.ArgumentParser(description='命令行中傳入一個(gè)數(shù)字')
parser.add_argument('integers', type=str, nargs='+',help='傳入的數(shù)字')
args = parser.parse_args()
print(args.integers)

nargs是用來說明傳入的參數(shù)個(gè)數(shù),'+' 表示傳入至少一個(gè)參數(shù)。這時(shí)候再重新在命令行中運(yùn)行python demo.py 1 2 3 4得到

['1', '2', '3', '4']

改變數(shù)據(jù)類型

add_argument中有type參數(shù)可以設(shè)置傳入?yún)?shù)的數(shù)據(jù)類型。我們看到代碼中有type這個(gè)關(guān)鍵詞,該關(guān)鍵詞可以傳入list, str, tuple, set, dict等。例如我們把上面的type=str,改成type=int,這時(shí)候我們就可以進(jìn)行四則運(yùn)算。

import argparse
parser = argparse.ArgumentParser(description='命令行中傳入一個(gè)數(shù)字')
parser.add_argument('integers', type=int, nargs='+',help='傳入的數(shù)字')
args = parser.parse_args()
#對(duì)傳入的數(shù)據(jù)進(jìn)行加總
print(sum(args.integers)

在命令行中輸入 python demo.py 1 2 3 4, 運(yùn)行結(jié)果為

10

位置參數(shù)

在命令行中傳入?yún)?shù)時(shí)候,傳入的參數(shù)的先后順序不同,運(yùn)行結(jié)果往往會(huì)不同,這是因?yàn)椴捎昧宋恢脜?shù),例如

import argparse
parser = argparse.ArgumentParser(description='姓名')
parser.add_argument('param1', type=str,help='姓')
parser.add_argument('param2', type=str,help='名')
args = parser.parse_args()
#打印姓名
print(args.param1+args.param2)

在命令行中分別輸入python demo.py 張 三和python demo.py 三 張,得到的 運(yùn)行結(jié)果分別為

張三

三張

如果我們將代碼parser.add_argument('param1', type=str,help='姓')和

parser.add_argument('param2', type=str,help='名')互換位置,即第4行和第五行代碼,再重新運(yùn)行

python demo.py 張 三 和 python demo.py 三 張,得到的 運(yùn)行結(jié)果分別為

三張

張三

可選參數(shù)

為了在命令行中避免上述位置參數(shù)的bug(容易忘了順序),可以使用可選參數(shù),這個(gè)有點(diǎn)像關(guān)鍵詞傳參,但是需要在關(guān)鍵詞前面加--,例如

import argparse
parser = argparse.ArgumentParser(description='姓名')
parser.add_argument('--family', type=str,help='姓')
parser.add_argument('--name', type=str,help='名')
args = parser.parse_args()
#打印姓名
print(args.family+args.name)

在命令行中輸入

python demo.py --family=張 --name=三

運(yùn)行結(jié)果

張三

可選參數(shù)雖然寫法比較繁瑣,但是增加了命令行中的可讀性,不容易因?yàn)閰?shù)傳入順序?qū)е聰?shù)據(jù)錯(cuò)亂。

默認(rèn)值

add_argument中有一個(gè)default參數(shù)。有的時(shí)候需要對(duì)某個(gè)參數(shù)設(shè)置默認(rèn)值,即如果命令行中沒有傳入該參數(shù)的值,程序使用默認(rèn)值。如果命令行傳入該參數(shù),則程序使用傳入的值。具體請(qǐng)看下面的例子

import argparse
parser = argparse.ArgumentParser(description='姓名')
parser.add_argument('--family', type=str, default='張',help='姓')
parser.add_argument('--name', type=str, default='三', help='名')
args = parser.parse_args()
#打印姓名
print(args.family+args.name)

在命令行中分別輸入 python demo.py 、 python demo.py --family=李

運(yùn)行結(jié)果分別為

張三

李三

必需參數(shù)

add_argument有一個(gè)required參數(shù)可以設(shè)置該參數(shù)是否必需。

import argparse
parser = argparse.ArgumentParser(description='姓名')
parser.add_argument('--family', type=str, help='姓')
parser.add_argument('--name', type=str, required=True, default='', help='名')
args = parser.parse_args()
#打印姓名
print(args.family+args.name)

在命令行中輸入 python demo.py --family=張,運(yùn)行結(jié)果

usage: demo.py [-h] [--family FAMILY] --name NAME
demo.py: error: the following arguments are required: --name

因?yàn)榭蛇x參數(shù)name的required=True,所以必須要傳入。如果我們將其更改為False,程序運(yùn)行結(jié)果

感謝各位的閱讀,以上就是“python argparse模塊傳參怎么使用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)python argparse模塊傳參怎么使用這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI