Python argparse模組的使用

2021-10-03 13:54:19 字數 3490 閱讀 7247

最近在看github上的mmskeleton專案時,遇到了python中的argparse模組。於是查閱了一下資料:

根據官方給出的argparsetutorial,該模組的作用在於對命令列進行解析。英文比較好的朋友,建議直接看tutorial,其中的解釋還是很清楚的。

看英文比較頭疼的朋友,也可以參考我的對於這個tutorial的理解:

當我們在linux系統下,用命令列來執行某個.py檔案時,該.py檔案中的argparse模組可以定義一些命令列語句以及其對應的語法。直接看例子:

假如你寫了乙個test.py檔案,那麼在linux系統下,執行它的操作就是:

python test.py

但如果我們希望在用命令列執行test.py檔案時,還能同時傳給該檔案它需要的變數並且顯示這些變數在test.py中處理後的結果,我們就需要import argparse模組了。

import argparse

parser = argparse.argumentparser()

parser.parse_args()

其中parser相當於建立乙個可命令列解析的引數列表。目前我們只是通過parser = argparse.argumentparser()這行**,將列表建立了,但並沒有往裡面新增任何引數。值得一提的是,即時是空列表,這裡預設的引數有-h或–help,用於顯示test.py中的這個引數列表。

$ python test.py

$ python test.py --help

usage: prog.py [-h]

optional arguments:

-h, --help show this help message and exit

下面我們可以在這個列表中加入一些引數:

import argparse

parser = argparse.argumentparser()

parser.add_argument(「square」, type=int,

help=「display a square of a given number」)

parser.add_argument("-v", 「–verbose」, action=「store_true」,

help=「increase output verbosity」)

args = parser.parse_args()

answer = args.square**2

if args.verbose:

print 「the square of {} equals {}」.format(args.square, answer)

else:

print answer

通過parser.add_argument(),我們可以確定新增引數的名稱,引數的型別,動作以及引數的解釋。可被新增的引數有兩種,名稱為「string」形式的,為必需引數,意思是一旦加入,在執行test.py檔案時必須加上該引數,否則報錯;名稱為「-string」或「–string」形式的,為選擇性引數,在執行test.py檔案時不加上該引數,不會報錯。

這裡的type=int,指定輸入引數應為整型。而如果某個引數只是作為乙個函式的trigger,不需要任何額外的輸入,例如我上面給出的"-v",action=「store_true"表示,只要判斷」-v"是否輸入就行。help=""用於對該引數做一些說明。

然後args=parser.parse_args()相當於提取了parser中所有新增的引數。之後可以用args./argument對該引數進行處理,得出結果,並在顯示出來。

上面**的演示如下:

$ python test.py

usage: test.py [-h] [-v] square

prog.py: error: the following arguments are required: square

$ python test.py 4

16$ python test.py 4 --verbose

the square of 4 equals 16

$ python test.py --verbose 4

the square of 4 equals 16

最後建議大家在linux下用命令列執行某個.py檔案前,可以先通過–help命令來檢視以下它定義的所有引數。例如對於下面這個prog.py.

import argparse

parser = argparse.argumentparser(description=「calculate x to the power of y」)

group = parser.add_mutually_exclusive_group()

group.add_argument("-v", 「–verbose」, action=「store_true」)

group.add_argument("-q", 「–quiet」, action=「store_true」)

parser.add_argument(「x」, type=int, help=「the base」)

parser.add_argument(「y」, type=int, help=「the exponent」)

args = parser.parse_args()

answer = args.x**args.y

if args.quiet:

print answer

elif args.verbose:

print 「{} to the power {} equals {}」.format(args.x, args.y, answer)

else:

print 「{}^{} == {}」.format(args.x, args.y, answer)

我們用–help來檢視它定義的引數:其中positional arguments就是我說的必需引數,optional arguments為選擇性引數

$ python prog.py --help

usage: prog.py [-h] [-v | -q] x y

calculate x to the power of y

positional arguments:

x the base

y the exponent

optional arguments:

-h, --help show this help message and exit

-v, --verbose

-q, --quiet

python argparse舉例說明

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

python argparse轉換為字典

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

python argparse 引數解析模組

這是乙個引數解析,可以用它快捷的為你的程式生成引數相關功能 import argparse 匯入程式引數模組 建立argparse物件,並將產品簡要說明加入 show 程式說明 程式簡要說明 字串 輸出help時會顯示 p argparse.argumentparser description sh...