首頁 > 軟體

python命令列引數argparse模組基本用法詳解

2023-02-01 18:01:41

argparse 是python自帶的命令列引數解析包,可以用來方便地讀取命令列引數。

一、傳入一個引數

import argparse

# 建立一個命令列引數解析器 
parser = argparse.ArgumentParser(description='命令列中傳入一個數位')
# 往解析器裡面新增引數
parser.add_argument('integer', type=str, help='傳入的數位')
# 得到命令列傳入的引數
args = parser.parse_args()
print(args.integer)

二、傳入多個引數

import argparse

# 建立一個命令列引數解析器 
parser = argparse.ArgumentParser(description='命令列中傳入一個數位')
# 往解析器裡面新增引數
parser.add_argument('integer', type=str, nargs='+', help='傳入的數位')
# 得到命令列傳入的引數
args = parser.parse_args()
print(args.integer)  # 以列表形式返回
注:
- nargs='+': 傳入一個或多個引數
- nargs='*': 傳入零個或多個引數
- nargs='?': 傳入零個或一個引數

三、改變資料型別

# 可通過更改type引數修改資料型別
parser.add_argument('integer', type=str, nargs='+', help='傳入的數位')

四、可選引數(關鍵字引數)

注:引數前面加雙橫槓"- -"表示這個引數是可選引數,即在命令列中可以以鍵值得形式指定,順序可以打亂。

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 XXX.py --family 張 --name 三 or
python XXX.py --name 三 --family 張

五、引數預設值

通過default指定預設值。

parser.add_argument('--family', default='李', type=str, help='姓')
parser.add_argument('--name', type=str, help='名')

六、引數解析

parse_args()只能解析已知引數,parse_known_args()相容未知引數並返回。

import argparse

parser = argparse.ArgumentParser(description='姓名')
parser.add_argument('--family', type=str,help='姓')
parser.add_argument('--name', type=str,help='名')

args = parser.parse_args()
# args, dynamic_args = parser.parse_known_args()

print(args)
print(dynamic_args)

命令列範例:
python XXX.py --family 張 --name 三 --test hello
結果:
args = parser.parse_args() # 報錯, error: unrecognized arguments: --test 5
args, dynamic_args = parser.parse_known_args() # 成功返回

補充:python中的argparse基本用法

1、argparse是一個python模組,用途是:命令列選項、引數和子命令的解釋。

2、使用步驟:

  • 匯入argparse模組,並建立直譯器
  • 新增所需引數
  • 解析引數

3、用法範例:

import argparse

# 1.建立直譯器
parser = argparse.ArgumentParser(description="可寫可不寫,只是在命令列引數出現錯誤的時候,隨著錯誤資訊列印出來。")
# 2.新增需要的引數
parser.add_argument('-gf', '--girlfriend', choices=['jingjing', 'lihuan'])
# 引數解釋
# -gf 代表短選項,在命令列輸入-gf和--girlfriend的效果是一樣的,作用是簡化引數輸入
#--girlfriend 代表完整的引數名稱,可以儘量做到讓人見名知意,需要注意的是如果想通過解析後的引數取出該值,必須使用帶--的名稱
# choices 代表輸入引數的只能是這個choices裡面的內容,其他內容則會保錯
parser.add_argument('--house', type=int, default=0)
# 引數解釋
# --house 代表引數名稱
# type  代表輸入的引數型別,從命令列輸入的引數,預設是字串型別
# default 代表如果該引數不輸入,則會預設使用該值
parser.add_argument('food')
# 引數解釋
# 該種方式則要求必須輸入該引數
# 輸入該引數不需要指定引數名稱,指定反而報錯,直譯器會自動將輸入的引數賦值給food

# 3.進行引數解析
args = parser.parse_args() 
print('------args---------',args)
print('-------gf-------', args.girlfriend)

4、命令列執行方式
假設上述檔案的名字是gf.py
在命令列執行時,則有以下幾種情況:

  • python gf.py potato ,這種方式會將potato賦值給food
  • python gf.py -gf jingjing tomato,該種方式會將jingjing賦值給girlfriend,tomato賦值給food
  • python gf.py --house 2 chicken,該種方式會將house賦值為2,food賦值為chicken

下面為以上三種情況的具體執行時截圖:
a.

b.

c.

學會了以上的幾種方式,argparse模組的基本用法也就掌握了。

到此這篇關於python命令列引數-argparse模組基本用法的文章就介紹到這了,更多相關python命令列引數內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com