python argparse 模組命令列引數解析

2021-08-19 23:53:27 字數 2017 閱讀 6586

argparse 是 python 的乙個命令列解析包,可根據需要編寫高可讀性的程式。網上的許多教程較為冗長和散漫,沒有達到精練好掌握的目的,本文針對專案中對 argparse 的用法,用例項對各個引數進行講解,力求達到讓讀者秒懂的目的。

先上**:

import argparse

if __name__ == '__main__':

# 建立命令列解析器控制代碼,並自定義描述資訊

parser = argparse.argumentparser(description='test the argparse package')

# 定義必選引數 positionarg

parser.add_argument('positionarg')

# 定義可選引數verbosity1

parser.add_argument('--verbosity1', '-v1', help='test the optional arguments')

# 定義可選引數verbosity2,並通過設定store_true表示該選項不需要接收引數,若不設action,則預設是需要接收引數的,否則報錯

parser.add_argument('--verbosity2', '-v2', action='store_true', help='test the action arg')

# 指定引數型別(預設是 str)

parser.add_argument('x', type=int, help='test the type')

# 設定引數的可選範圍

parser.add_argument('--verbosity3', '-v3', type=str, choices=['one', 'two', 'three', 'four'], help='test choices')

# 設定引數預設值

parser.add_argument('--verbosity4', '-v4', type=str, choices=['one', 'two', 'three'], default=1, help='test default value')

args = parser.parse_args() # 返回乙個命名空間

print(args)

params = vars(args) # 返回 args 的屬性和屬性值的字典

for k, v in params.items():

print(k, v)

**示例中寫上了詳細的注釋,**注釋也可了解各大概。下面針對一些特殊點再作詳述:

action=』store_true』

表示該選項不需要接收引數,直接設定該引數為 true,當然,如果不指定 -v2, 則該引數就是 false。但如果把 action=』store_true』 去掉,就必須給 -v2 指定乙個值。

程式用法幫助

比如該程式命名為 testarg.py,則可在命令列執行如下語句:

python3 testarg.py -h
執行得到函式的用法幫助文件:

完整的命令列引數執行命令和效果如下:

當然,引數的值也可寫成賦值形式,如下所示(等同於上圖中的命令):

python3 testarg.py hehe -v1

=verb1 --verbosity2 1

-v3=one -v4

=two

中間列印的 namespace 為引數解析返回的命名空間。

如此,結合例項,非常簡潔易懂,分享之。當然還有一些其他的用法,此處只列出了一些最常用的用法,在使用中如有需要,可自行查閱文件。

python argparse舉例說明

目的 想從命令列通過命令來指定是否執行程式中的某個函式 模組 更新關於另乙個例子 這裡只舉例說明 原因是看了很多博文之後,還是沒有解決筆者上面說的那個問題,即如何從命令列決定是否執行某段函式問題 設定乙個引數,名為foreground,簡寫f 即在終端可以輸入 foreground也可以輸入 f。跟...

Python argparse模組的使用

最近在看github上的mmskeleton專案時,遇到了python中的argparse模組。於是查閱了一下資料 根據官方給出的argparsetutorial,該模組的作用在於對命令列進行解析。英文比較好的朋友,建議直接看tutorial,其中的解釋還是很清楚的。看英文比較頭疼的朋友,也可以參考...

python argparse轉換為字典

在使用argparse定義程式引數時,常規用法如下 import argparse parser argparse.argumentparser parser.add argument epochs type int default 5000 help train epochs.parser.add...