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)換為下劃線.