argparse是一个常用的库函数,使用它的时候我们在命令行中不仅仅可以运行python文件,更可以零时调整参数,十分方便。
首先,如果你只是希望传一丢丢数据进去,那么只看下面两行就行了
import sys print("输入的参数为:%s" % sys.argv[1])
>python demo.py 1
输入的参数为:1
但是当要传很多的时候,还是接着往下看
基本用法,这是核心的两行:
parser = argparse.ArgumentParser()
parser.parse_args()
然后是可以添加的部分
# description参数可以用于描述脚本的参数作用,默认为空
parser=argparse.ArgumentParser(description="A description of what the program does")
parser.add_argument("echo") # 默认参数的设定 parser.add_argument("-v", "--verbosity", help="increase output verbosity") #可选参数
parser.parse_args()
default
:没有设置值情况下的默认参数
parser.add_argument('--name', default='Great')
required
: 表示这个参数是否一定需要设置
如果设置了required=True
,则在实际运行的时候不设置该参数将报错
parser.add_argument('-name', required=True)
type
:参数类型
默认的参数类型是str类型,如果你的程序需要一个整数或者布尔型参数,你需要设置type=int
或type=bool
parser.add_argument('-number', type=int)
choices
:参数值只能从几个选项里面选择
parser.add_argument('-arch', required=True, choices=['alexnet', 'vgg'])
help
:指定参数的说明信息
parser.add_argument('-arch', required=True, choices=['alexnet', 'vgg'], help='the architecture of CNN, at this time we only support alexnet and vgg.')
dest
:设置参数在代码中的变量名
argparse默认的变量名是--
或-
后面的字符串,但是你也可以通过dest=xxx
来设置参数的变量名,然后在代码中用args.xxx
来获取参数的值
nargs
: 设置参数在使用可以提供的个数
parser.add_argument('-name', nargs=x)
x
的候选值和含义如下
N 参数的绝对个数(例如:3)
'?' 0或1个参数
'*' 0或所有参数
'+' 所有,并且至少一个参数
--toy
:为参数名称-t
:为参数别称action='store_true'
:参数是否使用,如果使用则为True,否则为False
parser.add_argument('--toy','-t',action='store_true',help='Use only 50K samples of data')
那么在py文件中如何调用呢? parser.parse_args()
#命令行输入参数处理 parser = argparse.ArgumentParser() parser.add_argument('file') #输入文件 parser.add_argument('-o', '--output') #输出文件 parser.add_argument('--width', type = int, default = 80) #输出宽 parser.add_argument('--height', type = int, default = 80) #输出高 #获取参数 args = parser.parse_args() IMG = args.file WIDTH = args.width HEIGHT = args.height OUTPUT = args.output