argparse 簡易使用教程
- 1.概況
- 2. action
- 3. argparse 使用demo
- 3.1 argparse 實現加法器
- 3.2 D-Model parser
1.概況
argparse是Python中用于解析命令行參數的一個模塊,可以自動生成help和usage信息;當從終端輸入的參數無效時,模塊會輸出提示信息。
必選參數和可選參數
# step1.創建ArgumentParser對象parser
parser=Argparse.ArgumentParser(description="process some integer.")
## parser保存了所有必要信息,用于將從命令行中讀入的參數 解析為對應的python數據類型。
## description,用于簡要介紹程序的功能和工作原理。在幫助消息中,顯示在 命令行用法字符串 和 各種參數的幫助消息之間。
## prog,用于顯示“程序文件名”,默認為“運行文件名”
## usage,程序使用說明。當使用了 usage 的參數之后,會覆蓋覆蓋了 prog 參數里面的值。
# step2: 給parser添加信息讀取字段,這些字段決定parser解析讀入參數的方法
parser.add_argument()
# ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
## name,用于保存輸入變量
## action='store_const' 存儲由const關鍵字參數指定的值。
## default值是一個字符串,則解析器會將該值解析為一個命令行參數,變量的默認輸入
## type 指定變量的類型
## nargs單個命令行參數與要執行的單個操作相關聯
## nargs='+'.'+'和'*'一樣,出現的所有命令行參數都被收集到一個列表中。
## 當ArgumentParser生成幫助信息時,默認情況下使用dest的值作為每個對象的“名字”,metavar會改變顯示出來的名字 - parse_args() 對象中屬性的名字仍然由dest的值決定。(metavar: 這個參數用于help 信息輸出中)
# step3:解析parser保存的參數,返回一個命名空間
# 在實際python腳本中parse_args()一般不使用參數,它的參數由sys.argv確定。
args = parser.parse_args()
2. action
action關鍵字默認狀態有兩種,store_true和store_false,若輸入命令時,不指定其參數,則store_true顯示為False,store_false顯示為True。可用作一個開關操作一個開關操作。【終端命令帶上之后會使用默認值】
parser.add_argument('--cuda', action='store_true', help='enables cuda')
# 終端命令不加入--cuda, args.cuda=False, 終端命令加入--cuda, args.cuda=True
parser.add_argument('--cuda', action='store_false', help='enables cuda')
# 終端命令不加入--cuda, args.cuda=True, 終端命令加入--cuda, args.cuda=False
3. argparse 使用demo
3.1 argparse 實現加法器
調用 parse_args() 將返回一個具有兩個屬性的對象, integers 和 accumulate 。累和語句實現,默認對輸入的數據進行求最大,如果解析到sum的參數,那么求和
import argparse
parser=argparse.ArgumentParser(description="process some integer.")
parser.add_argument('integers',metavar='N',type=int,nargs='+',help='an integer for accumulator') # 可以讀一個數組
parser.add_argument('--sum',dest='accumulate',action='store_const',const=sum,default=max,help='sum the integers (default:find the max)'
args=parser.parse_args()
print(args.accumulate(args.integers)) # 居然可以當作函數調用
上面程序實現了,默認求最大,可選求和的功能,結合上面程序,講解三個函數中常用的選項含義:
3.2 D-Model parser
在程序會見到最簡單的形式,指定,參數類型,可選值,默認值,和幫助信息等,在運行程序的時候可以通過命令行輸入用戶制定的參數,否則使用默認參數。
更多內容可以詳見以下兩篇博文:
https://cloud.tencent.com/developer/section/1370514
https://www.cnblogs.com/piperck/p/8446580.html
https://blog.csdn.net/LemonTree_Summer/article/details/80749359