python提供了多种命令行解析库

  • sys.argv
  • argparse库

sys.argv用法

import sys
print(sys.argv)

在命令行输入 python test.py 1 2 3
输出如下:
[‘test.py’, ‘1’, ‘2’, ‘3’]

总结:

  1. import sys后就可以使用sys.argv
  2. 命令行参数会被保存在sys.argv中
  3. sys.argv就是一个list
  4. sys.argv中的元素的数据类型都是字符串

argparse库的用法

#step1 导入库 import argparse #step2 初始化库 parse = argparse.ArgumentParser() #step3 增加参数 parse.add_argument(‘test0’) parse.add_argument(‘test1’) parse.add_argument(‘-v’,’—value’,’-l’,nargs=2) parse.add_argument(‘test2’) #step4 解析参数 args = parse.parse_args() print(args)


命令行输入:python test2.py a —value 2 3 d c
输出:Namespace(test0=’a’, test1=’d’, test2=’c’, value=[‘2’, ‘3’])

命令行输入:python test2.py a -v 2 3 d c
输出:Namespace(test0=’a’, test1=’d’, test2=’c’, value=[‘2’, ‘3’])

命令行输入:python test2.py a -l 2 3 d c
输出:Namespace(test0=’a’, test1=’d’, test2=’c’, value=[‘2’, ‘3’])

总结:
parse.add_argument允许两种方式的命令行参数

  1. 不指定参数
  2. 指定参数

1.parse.add_argument不指定参数的方式

  • parse.add_argument(‘test0’)
  • 在命令行中不需要指定参数,输入的参数会依次赋值给添加的参数


2.parse.add_argument指定参数的方式**

  • parse.add_argument(‘-v’,’—value’,’-l’,nargs=2)
  • 在参数名前必须加-,这种方式可以方便的用小写表示
  • 可以有多个小写的表示,此时输入任何一个都可以
  • 使用两个—,表示在程序中的参数名

使用举例:
parser.add_argument(‘—dataset_root’, default=’/usr/data’)
parser.add_argument(‘—start_iter’, default=0, type=int)

def str2bool(v):
return v.lower() in (“yes”, “true”, “t”, “1”)#返回的是True或者False
parser.add_argument(‘—visdom’, default=False, type=str2bool)