argparse(命令行参数解析)用法

//一般流程
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的值
当然正常人写代码肯定不会写重复参数的,所以搞懂这个没有任何使用价值

你可能感兴趣的:(argparse(命令行参数解析)用法)