python命令行解析argparse模块

主要是比较理解两个函数:parse_args()parse_known_args()
parse_args()

import argparse
import sys
parse = argparse.ArgumentParser()

parse.add_argument("--learning_rate", type=float, default=0.01, 
                                      help="initial learining rate")
parse.add_argument("--max_steps", type=int, default=2000, help="max train number")
parse.add_argument("--layer_unit", type=int, default=128, help="layer units")

arg = parse.parse_args(sys.argv[1:]) #argv[1:]是命令行输入的所有参数
print(arg)
print(arg.learning_rate, arg.max_steps, arg.layer_unit)

命令行运行:
$ python3 test.py --max_steps=100
结果:
Namespace(layer_unit=128, learning_rate=0.01, max_steps=100)
0.01 100 128

命令行运行:
$ python3 test.py --max_steps=100 --add_para=20
结果:
usage: test.py [-h] [–learning_rate LEARNING_RATE]
     [–max_steps MAX_STEPS] [–layer_unit LAYER_UNIT]
test.py: error: unrecognized arguments: –add_para=20


parse_known_args()

flags, unparsed = parse.parse_known_args(sys.argv[1:]) # 返回两个部分
print(flags)
print(flags.learning_rate, flags.max_steps, flags.layer_unit)
print(unparsed)

命令行运行:
$ python3 test.py --max_steps=100
结果:
Namespace(layer_unit=100, learning_rate=0.01, max_steps=100)
0.01 100 128
[]

命令行运行:
$ python3 test.py --max_steps=100 --add_para=20
结果:
Namespace(layer_unit=100, learning_rate=0.01, max_steps=100)
0.01 100 128
[‘–add_para’, ‘20’]


综上,两个函数效果差不多,就是未定义参数上的一点区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值