//一般流程
import argparse
parser = argparse.ArgumentParser()
parser.add_argument(...)
args = parser.parse_args()
现假设运行python文件命令为python test.py
如果要添加某个必需整型参数可以用
parser.add_argument('essential',type=int)
print(args.essential)
来获取参数。运行时命令为python test.py 100
会显示100
,如果给的不是整型就报错
如果要添加某个可选参数可以用
parser.add_argument('-o')
print(args.o)
或者
parser.add_argument('-o','--optional')
print(args.optional)
设置了长参数后parser中的变量名就需要跟长参数名一样了
运行时命令为python test.py -o hello
或者python test.py --optional hello
如果不指定-o打印出的结果为None
当然也可以用
parser.add_argument('-o','--optional',default = '123')
print(args.optional)
来指定该参数的默认值,这样命令行不传入参数时打印出的就是123
还有一种可选是不需要传值的可选参数,使用action参数,比如用
parser.add_argument('-train',action = 'store_true')
print(args.train)
来告诉模型是训练还是测试,命令行中只需要
python test.py -train
最后打印结果就为True
否则为False
最后是参数名重复问题,遵循命令行右值覆盖左值原则,比如命令行中为
python test.py 1 -a 2
无论代码里是
parser.add_argument('-a')
parser.add_argument('a')
还是
parser.add_argument('a')
parser.add_argument('-a')
最终print(args.a)
的结果都为2
也就是-a
的值
当然正常人写代码肯定不会写重复参数的,所以搞懂这个没有任何使用价值
网友评论