背景
Argparse
顾名思义参数解析器,是命令行运行 python
文件时解析参数的模块,多用在需要多次修改代码参数的时候。比如 batch_size
、epoch
等,那么使用该模块将无比简单。
基本结构
假设 python
文件名为 :test.py
。
import argparse
parser = argparse.ArgumentParser(description="Demo of argparse.")
parser.add_argument('--batch_size', default=32, help='nums of a batch data')
parser.add_argument('-p', dest='path', default='data/', help='the path of data')
parser.add_argument('-m', '--model', default='train', help='train or eval')
args = parser.parse_args()
print(args)
命令行运行时输入:
python test.py [--batch_size [128]] [-p [save/]] [-m [train]]
使用详解
第一步
parser = argparse.ArgumentParser(description='Demo of argparse')
使用 argparse
创建一个 ArgumentParser
对象,主要使用 description
参数,目的是在命令行运
行时使用 -h
显示程序的一个自定义简单描述。像这样:
E:\> python test.py -h
usage: test.py [-h] [--batch_size BATCH_SIZE] [-p PATH] [-m MODEL]
Demo of argparse.
optional arguments:
-h, --help show this help message and exit
--batch_size BATCH_SIZE
nums of a batch data
-p P ATH the path of data
-m MODEL, --model MODEL
train or eval
第二步
parser.add_argument('-m', '--model', default='train', help='train or eval')
通过 add_argument()
方法添加需要的一些参数。
该方法本身共包含11个参数,下面只展开几个常用的:
ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
-
name or flags
name
和flags
分别以可以-
和--
开头,两者可以都设置,也可以只设置其中一个。从第一步的运行结果可以看到若同时定义了这两个,会以
-
为主,但是命令行运行时两者都可以用。比如:
python test.py [--batch_size [128]] [-p [save/]] -m train
或者
python test.py [--batch_size [128]] [-p [save/]] --model train
-
default
要添加参数的默认值,比如命令行中省略-p
时,默认args.path
值是data\
。 -
type
要添加参数的类型,默认为str
类型。若需要布尔类型或者浮点型,设成bool
和float
。 -
required
命令行中是否必须使用该参数,默认为False
。若设required=True
,就算有默认值,没有使用也会报错。 -
help
要添加参数的一个简单描述,忘了这个参数有什么用时可以查看。 -
dest
要添加参数的名字,默认为--
或者-
,用法在第三步。
第三步
args = parser.parse_args()
path = args.path
通过 parse_args()
方法调用已经定义的参数,然后通过 args.'dest'
获得添加的参数值。
Reference
argparse—Parser for command-line options, arguments and sub-commands
网友评论