python命令行解析之parse_known_args()函数和parse_args()

命令行解析

首先导入命令行解析模块 

import argparse
import sys

然后创建对象

parse=argparse.ArgumentParser() 

然后增加命令行

对于函数add_argumen()第一个是选项,第二个是数据类型,第三个默认值,第四个是help命令时的说明

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")
parse.add_argument("--hidden1",type=int,default=100,help="hidden1")

然后解析,其实不需要加入sys.argv[1:],直接arg=parse.parse_args()

arg=parse.parse_args(sys.argv[1:])

其中参数sys.argv[1:]是命令行语句中从第一个到最后。

如在ubuntu下输入命令行python gg.py --learning_rate=20 --max_steps=10

sys.argv[1:]=['--learning_rate=20', '--max_steps=10']  是一个列表

输入命令行python gg.py --learning_rate 20 --max_steps 10    ( 一般这些写的形式比较多)

sys.argv[1:]=['--learning_rate', '20', '--max_steps', '10']

arg=parse.parse_args(sys.argv[1:])
flags,unparsed=parse.parse_known_args(sys.argv[1:])

arg=parse_args()输出的argnamespace空间,结果是Namespace(hidden1=100, learning_rate=20.0, max_steps=10)

flags, unparsed=parse_known_args()函数输出结果为flags和unparsed,flags同parse_args()输出结果相同,Namespace(hidden1=100, learning_rate=20.0, max_steps=10)


代码

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")
parse.add_argument("--hidden1",type=int,default=100,help="hidden1")
arg=parse.parse_args()

print(sys.argv[1:])
print(type(sys.argv[1:]))
print(arg)
print(type(arg))
print(vars(arg))            #vars为返回对象的属性词典
print(arg.learning_rate)
print(arg.max_steps)
print(arg.hidden1)

#命令行
$ python main.py --learning_rate=20 --max_steps=10

#输出
['--learning_rate=20', '--max_steps=10']
<class 'list'>
Namespace(hidden1=100, learning_rate=20.0, max_steps=10)
<class 'argparse.Namespace'>
{'hidden1': 100, 'learning_rate': 20.0, 'max_steps': 10}
20.0
10
100

如果输入python main.py --learning_rate 20 --max_steps 10     一般这样写的形式比较多

除了sys.argv[1:]输出结果为5个元素的列表外,一样可以解析出Namespace(hidden1=100, learning_rate=20.0, max_steps=10)

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")
parse.add_argument("--hidden1",type=int,default=100,help="hidden1")

flags,unparsed=parse.parse_known_args(sys.argv[1:])
print(sys.argv[1:])
print(type(sys.argv[1:]))
print(flags)
print(type(flags))
print(vars(flags))            #vars为返回对象的属性词典
print(flags.learning_rate)
print(flags.max_steps)
print(flags.hidden1)
print(unparsed)

#输入
#也可以使用python main.py --learning_rate=20 --max_steps=10,都一样
$ python main.py --learning_rate 20 --max_steps 10

#输出
['--learning_rate', '20', '--max_steps', '10']
<class 'list'>
Namespace(hidden1=100, learning_rate=20.0, max_steps=10)
<class 'argparse.Namespace'>
{'hidden1': 100, 'learning_rate': 20.0, 'max_steps': 10}
20.0
10
100
[]

可以证明:

arg=parse_args()和 flags, unparsed=parse_known_args()用法基本一样,都是解析输出参数的

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值