【Python初级】Argparse模块

目录

1. 主要步骤

2. add_argument()

3. parse_known_args() 与 parse_args()

Argparse为Python内置模块,无需另外下载任何第三方库,用于命令行参数解析,我们可以用此方便地编写命令行接口,为模型定义和修改参数。

1. 主要步骤

定义argparse主要分为四个步骤:

(1) 导入argparse模块:import argparse

(2) 创造命令行解析器对象ArgumentParse

(3) 为解析器对象添加命令行参数:调用add_argument()函数

(4) 解析命令行参数:parse_args()

# 1.
import argparse

# 2.
parser = argparse.ArgumentParse()

# 3.
parser.add_argument(name...[, action][, default][, type][, choices][, help])

# 4.
args = parser.parse_args()

2. ArgumentParse

argparse.ArgumentParse(prog=None,description=None,parents=[], add_help=True)

■prog:程序的名称(defult:sys.argv[0])

■ description:Text to display before the argument help (default:no text)

■ parents: 一个 ArgumentParse 对象的列表,它们的参数也应包含在内

■ add_help: 为解析器添加 -h/--help 选项(defaul: True)

3. add_argument()

(1) 属性名之前添加“--”,使之变成为可选参数;

## 属性名之前添加“--”,使之变成为可选参数
parser.add_argument(
                    '--model', 
                    type=str,
                    help='The naeme of the model for prediction',
                    choices=('RNN', 'LSTM', 'GRU'),
                    default='LSTM'
)

(2) 参数简写

parser.add_argument(
                    '-m',
                    '--model', 
                    type=str,
                    help='The naeme of the model for prediction',
                    choices=('RNN', 'LSTM', 'GRU'),
                    default='LSTM'
)

内部依旧使用args.model,命令行只需输入:python main.py -m 'GRU' 

参数简写时不要定义“-h”,这个是给help用的

(3) 参数顺序

一般首先add不可选参数,最后add可选参数。

在命令行赋值时,程序按照add顺序赋值

parser.add_argument('a', type=int, help=...)
parser.add_argument('b', type=int, help=...)

命令行输入:python main.py x y 

则args.a = x;   args.b =y

4. parse_known_args() 与 parse_args()

 (1)parse_args()

parse.add_argument('-w','--weight_decay', type=float, default=0.6, help='Regularizaiton')
opt = parse.parse_args()
print(opt)

命令行输入 :python main.py -w 0.2

parse_args()函数返回的是一个命名空间Namespace:

Namespace(w=0.2)

若命令行输入: python main.py -w 0.2 --unit 0.3

很显然输入比add_argument()的参数多一个参数,会报错

>> error:unrecognized arguments: --unit 0.3

(2)parse_known_args()

parse.add_argument('-w','--weight_decay', type=float, default=0.6, help='Regularizaiton')
opt = parse.parse_known_args()
print(opt)

命令行输入: python main.py -w 0.2 --unit 0.3

此时不会报错,返回包含有两个元素的元组,而多余的参数以字符串的形式存放在元组的第二个元素即list当中,即如果运行命令中传入了之后才会获取到的其他配置,将多出来的部分保存起来,留到后面使用。

(Namespace(w=0.2), ['--unit', '0.3'])
Namespace(w=0.2)
['--unit', '0.3']

若后面多余参数仍未配置,最后仍会报错。 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值