中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python?argparse模塊傳參怎么使用

發布時間:2022-06-02 11:09:31 來源:億速云 閱讀:211 作者:iii 欄目:開發技術

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

傳入一個參數

我們先在桌面新建“arg學習”的文件夾,在該文件夾中新建demo.py文件,來看一個最簡單的argsparse庫的使用的例子。

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

在這個代碼中,我們在命令行傳入一個數字。使用方法是打開命令行,先將工作目錄cd到arg學習

cd desktop/arg學習

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

python demo.py -h

在命令行中看到demo.py的運行結果如下

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

現在我們在命令行中給demo.py 傳入一個參數5,

python demo.py 5

運行,得到的運行結果是

Namespace(integers='5')

操作args字典

其實得到的這個結果Namespace(integers='5')是一種類似于python字典的數據類型。

我們可以使用 arg.參數名來提取這個參數

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

在命令行中運行 python demo.py 5 , 運行結果為

5

傳入多個參數

現在在命令行中給demo.py 傳入多個參數,例如傳入1,2,3,4四個數字

python demo.py 1 2 3 4

運行報錯

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

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

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

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

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

改變數據類型

add_argument中有type參數可以設置傳入參數的數據類型。我們看到代碼中有type這個關鍵詞,該關鍵詞可以傳入list, str, tuple, set, dict等。例如我們把上面的type=str,改成type=int,這時候我們就可以進行四則運算。

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

在命令行中輸入 python demo.py 1 2 3 4, 運行結果為

10

位置參數

在命令行中傳入參數時候,傳入的參數的先后順序不同,運行結果往往會不同,這是因為采用了位置參數,例如

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 三 張,得到的 運行結果分別為

張三

三張

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

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

python demo.py 張 三 和 python demo.py 三 張,得到的 運行結果分別為

三張

張三

可選參數

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

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=三

運行結果

張三

可選參數雖然寫法比較繁瑣,但是增加了命令行中的可讀性,不容易因為參數傳入順序導致數據錯亂。

默認值

add_argument中有一個default參數。有的時候需要對某個參數設置默認值,即如果命令行中沒有傳入該參數的值,程序使用默認值。如果命令行傳入該參數,則程序使用傳入的值。具體請看下面的例子

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=李

運行結果分別為

張三

李三

必需參數

add_argument有一個required參數可以設置該參數是否必需。

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=張,運行結果

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

因為可選參數name的required=True,所以必須要傳入。如果我們將其更改為False,程序運行結果

感謝各位的閱讀,以上就是“python argparse模塊傳參怎么使用”的內容了,經過本文的學習后,相信大家對python argparse模塊傳參怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

元谋县| 江陵县| 吐鲁番市| 泸定县| 会宁县| 收藏| 察哈| 龙门县| 大厂| 连云港市| 闽清县| 离岛区| 沐川县| 阿城市| 清苑县| 镇远县| 夏津县| 平利县| 临海市| 黄龙县| 嘉善县| 漾濞| 吉林省| 乳山市| 龙胜| 额敏县| 江源县| 枞阳县| 淮滨县| 新建县| 原阳县| 平远县| 崇仁县| 清河县| 沁源县| 城步| 泸州市| 丹江口市| 巴里| 镇康县| 长宁县|