Python argparse命令行參數解析包的詳解

先不使用argparse模塊,我們定義一個計算長方體體積的函數volumen_of_cuboid,計算其體積,代碼如下:

def volumen_of_cuboid(length, width, height):
    volumen = length * width * height
    return volumen

if __name__ =="__main__":
    print(volumen_of_cuboid(3,4,5))

運行結果爲:
在這裏插入圖片描述

接下來,我們將其改成使用argparse命令行參數解析包的代碼,

import argparse

parser = argparse.ArgumentParser(description='volumen_of_cuboid') #創建一個解析對象parser,可以認爲是一個裝載參數的容器
parser.add_argument('length', type=int, help='length of cuboid')#爲這個解析對象添加命令行參數
parser.add_argument('width', type=int, help='width of cuboid')#爲這個解析對象添加命令行參數
parser.add_argument('height', type=int, help='height of cuboid')
args = parser.parse_args()#用args是因爲到時候會在命令行裏給這些參數傳遞數值

def volumen_of_cuboid(length, width, height):
    volumen = length * width * height
    return volumen

if __name__ =="__main__":
    print(volumen_of_cuboid(args.length, args.width, args.height))#把原來的實參替換成命令行參數

接下來我們win+r,輸入cmd,cd進入代碼所在路徑:
在這裏插入圖片描述

再輸入:python opp.py 3 4 5 這裏不同參數之間通過一個空格隔開,運行結果爲:

在這裏插入圖片描述

第一步:parser = argparse.ArgumentParser(description='volumen_of_cuboid') 創建一個解析對象parser,可以認爲parser是一個裝載參數的容器

第二步:parser.add_argument('length', type=int, help='length of cuboid')爲這個解析對象parser添加命令行參數length

第三步:args = parser.parse_args() 用args是因爲到時候會在命令行裏給這些參數傳遞數值

第四步:將原來實參的位置替換成命令行參數

調用help命令:輸入:python opp.py -h,得到:
在這裏插入圖片描述

可以看出參數必須按照第一個是length,第二個是width,第三個是height。

但是,這樣固定的參數位置可能不太靈活,我們要如何改進呢?-----使用選擇性參數/flag:

在參數之前加上兩個橫杆:parser.add_argument('--length', type=int, help='length of cuboid'),那麼我們就可以靈活地在命令行中輸入參數了(先寫參數名稱,空格,再寫參數的值):python opp.py --height 5 --width 4 --length 3
在這裏插入圖片描述

也可以在參數之前加上一個橫杆:
parser.add_argument('-length', type=int, help='length of cuboid')

那麼在傳參的時候就也要寫一個橫杆:
在這裏插入圖片描述

也可以兩個橫杆一個橫杆共存(-l代表--length的簡寫):
parser.add_argument('-l','--length', type=int, help='length of cuboid')
在這裏插入圖片描述

再次help:
在這裏插入圖片描述
可以看到選擇性參數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章