1 sys.argv
如果脚本很简单或临时使用,没有多个复杂的参数选项,可以直接利用sys.argv
将脚本后的参数依次读取(读进来的默认是字符串格式)。
import sys print("输入的参数为:%s" % sys.argv[1])
命令行执行效果:
>python demo.py 1 输入的参数为:1
2 argparse
如果参数很多,比较复杂,并且类型不统一,那么argparse
可以很好的解决这些问题,下面一个实例解释了argparse
的基本使用方法
import argparse # description参数可以用于描述脚本的参数作用,默认为空 parser=argparse.ArgumentParser(description="A description of what the program does") parser.add_argument('--toy','-t',action='store_true',help='Use only 50K samples of data') parser.add_argument('--num_epochs',choices=[5,10,20],default=5,type=int,help='Number of epochs.') parser.add_argument("--num_layers", type=int, required=True, help="Network depth.") args=parser.parse_args() print(args) print(args.toy,args.num_epochs,args.num_layers)
命令行执行效果:
>python demo.py --num_epochs 10 --num_layers 10 Namespace(num_epochs=10, num_layers=10, toy=False) False 10 10
2.1 基本使用
parser.add_argument('--toy','-t',action='store_true',help='Use only 50K samples of data')
--toy
:为参数名称
-t
:为参数别称
action='store_true'
:参数是否使用,如果使用则为True,否则为False
>python demo.py -t --num_epochs 10 --num_layers 10 Namespace(num_epochs=10, num_layers=10, toy=True) True 10 10 # 对比和上次执行的区别
help
:参数说明
2.2 相关参数
- 实例1
parser.add_argument('--num_epochs',choices=[5,10,20],default=5,type=int,help='Number of epochs.')
choices
:候选值,输出参数必须在候选值里面,否如会出现下面的结果:
>python demo.py -t --num_epochs 30 --num_layers 10 usage: demo.py [-h] [--toy] [--num_epochs {5,10,20}] --num_layers NUM_LAYERS demo.py: error: argument --num_epochs: invalid choice: 30 (choose from 5, 10, 20)
default
:默认值,如果不输入参数,则使用该默认值
>python demo.py -t --num_layers 10 Namespace(num_epochs=5, num_layers=10, toy=True) True 5 10
int
:参数类型
- 实例2
parser.add_argument("--num_layers", type=int, required=True, help="Network depth.")
required
:为必选参数,如果不输入,则出现以下错误:
>python demo.py -t --num_epochs 10 usage: demo.py [-h] [--toy] [--num_epochs {5,10,20}] --num_layers NUM_LAYERS demo.py: error: the following arguments are required: --num_layers
- 实例3
-h
:输出参数使用说明信息
>python demo.py -h usage: demo.py [-h] [--toy] [--num_epochs {5,10,20}] --num_layers NUM_LAYERS A description of what the program does optional arguments: -h, --help show this help message and exit --toy, -t Use only 50K samples of data --num_epochs {5,10,20} Number of epochs. --num_layers NUM_LAYERS Network depth.