python內(nèi)置包 argparse使用(解析命令行傳參)

argparse命令是解析命令行傳遞的參數(shù)工具
比如命令行執(zhí)行一個python命令
python test.py 10 20
我想要在test.py文件運行的時候拿到傳遞的參數(shù)10和20 就需要使用 argparse 包

使用方法:簡單案例

定位參數(shù)解析(Positional argument)

# -*- coding: utf-8 -*-

import argparse   # 導(dǎo)包

parser = argparse.ArgumentParser()  # 創(chuàng)建對象
parser.add_argument('integer', type=int, help='display an integer')  # 添加匹配參數(shù)規(guī)則
# integer 是給獲取的參數(shù)賦值一個變量名 ,  type 設(shè)置匹配的參數(shù)類型  help 是使用 -h 時展示的內(nèi)容
args = parser.parse_args()  # 獲取所有參數(shù), 注意不是一個字典,下面獲取數(shù)據(jù)只能用 點 .

print args.integer   # 打印參數(shù)

運行結(jié)果

python test_argparse.py 10
>>10
python test_argparse.py -h
>>usage: test_argparse.py [-h] integer   # 輸出命令的格式,即使用方式
>>positional arguments:
>>integer     匹配整數(shù)

# 如果傳遞參數(shù)多于需要的參數(shù),會報錯太多的參數(shù)

可選參數(shù) 案例(Optional argument)

# -*- coding: utf-8 -*-

import argparse

parser = argparse.ArgumentParser()

parser.add_argument("--square", help="display a square of a given number", type=int)
# 添加可選參數(shù),需要在定義變量名的時候加 --
# 命令行調(diào)用的時候也要加 -- 變量名
parser.add_argument("--cubic", help="display a cubic of a given number", type=int)

args = parser.parse_args()

if args.square:
    print(args.square**2)

if args.cubic:
    print(args.cubic**3)

調(diào)用方式:

如果參數(shù)都是可選的,則不傳參直接執(zhí)行運行不會報錯
python test_argparse.py 

如果傳參,命令行需要加對應(yīng)的可選參數(shù)變量名,命令行調(diào)用必須參數(shù)傳遞不需要加變量名
python test_argparse.py --square 10
>> 100

python test_argparse.py --square 10  --cubic 3
>>100
>>27

可選參數(shù)和必選參數(shù)配合使用

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers',  type=int, nargs='+',   # nargs 指定了至少為1個值,并且存為列表
                   help='an integer for the accumulator')  # 添加必選參數(shù) 命令行調(diào)用不用加變量名
parser.add_argument('--sum', dest='accumulate', action='store_const',  # dest是將捕獲到的可選參數(shù)解析為 調(diào)用時的變量名
                    # 第12行 是調(diào)用 ,也可以理解為 定位參數(shù)指定的變量名調(diào)用  可選參數(shù)以dest指定變量名調(diào)用
                   const=sum, default=max,  # default 是不指定可選參數(shù)時的默認(rèn)值,這里使用了python內(nèi)置方法max
                   help='sum the integers (default: find the max)') # 下面的打印是將integers得到的參數(shù)傳進來解析
#  action 是將變量存儲到const 里面, const又調(diào)用python內(nèi)置函數(shù) sum 求和

args = parser.parse_args()
print(args.accumulate(args.integers))

調(diào)用

python test_argparse.py 1 2 3 4
>>4
python test_argparse.py 1 2 3 4 --sum
>>10

下面詳解 add_argument命令

add_argument(name or flags...[, action][, nargs][, const][, default]
              [, type][, choices][, required][, help][, metavar][, dest])

name or flags  #選項字符串的名字或者列表,例如 foo 或者 -f, --foo

action  # 命令行遇到參數(shù)時的動作,默認(rèn)值是 store。
    # =store_const,表示賦值為const;
    # =append,將遇到的值存儲成列表,也就是如果參數(shù)重復(fù)則會保存多個值;
    # =append_const,將參數(shù)規(guī)范中定義的一個值保存到一個列表;
    # =count,存儲遇到的次數(shù);此外,也可以繼承 argparse.Action 自定義參數(shù)解析;

nargs - 應(yīng)該讀取的命令行參數(shù)個數(shù),可以是具體的數(shù)字,
    # 或者是?號,一個參數(shù)
    # 當(dāng)不指定值時對于 Positional argument 使用 default,對于 Optional argument 使用 const;
    # 或者是 * 號,表示 0 或多個參數(shù);或者是 + 號表示 1 或多個參數(shù)。

const - action 和 nargs 所需要的常量值

default - 不指定參數(shù)時的默認(rèn)值。這里指定了python內(nèi)置的max函數(shù),選取最大值

type - 命令行參數(shù)應(yīng)該被轉(zhuǎn)換成的類型。

choices - 參數(shù)可允許的值的一個容器。

required - 可選參數(shù)是否可以省略 (僅針對可選參數(shù))。

help - 參數(shù)的幫助信息,打印的說明

dest - 解析后的參數(shù)名稱,默認(rèn)情況下,對于可選參數(shù)選取最長的名稱,中劃線轉(zhuǎn)換為下劃線.
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容