直接可套用的代码样例,只需要根据实际需求增加add_argument,添加可选参数和必选参数:
Argparse模块官方文档说明:https://docs.python.org/2/howto/argparse.html#id1
import argparse,sys if len(sys.argv) == 1: sys.argv.append("-h") parser = argparse.ArgumentParser() parser.add_argument('-s',dest='nr_thread',default = 12,type=int) parser.add_argument('-cvt_path',type = str) parser.add_argument('src_path') parser.add_argument('dst1_path') parser.add_argument('dst2_path') print (parser.parse_args()) args = vars(parser.parse_args()) print (args)
1、 parser.add_argument('-s',dest='nr_thread',default = 12,type=int):添加可选参数s(参数名),参数的另一个名字nr_thread,程序内使用,默认值是12,类型是int。
2、parser.add_argument('-cvt_path',type = str):添加可选参数 cvt_path,其类型是str。
3、parser.add_argument('src_path'):添加必选参数src_path。
可选参数,调用python脚本时,可传可不传,传参数的写法是(-cvt_path converters/pre-a.py)。必选参数,调用python脚本时,必须传进去。
args = vars(parser.parse_args()):将参数列表转成字典的形式,方便程序使用
几个使用例子:
命令:
python prog.py tr.csv tr.gbdt.dense tr.gbdt.sparse-cvt_path converters/pre-a.py
输出结果:
Namespace(cvt_path='converters/pre-a.py', dst1_path='tr.gbdt.dense', dst2_path='tr.gbdt.sparse', nr_thread=12, src_path='tr.csv')
{'nr_thread': 12, 'cvt_path': 'converters/pre-a.py', 'dst2_path': 'tr.gbdt.sparse', 'src_path': 'tr.csv', 'dst1_path': 'tr.gbdt.dense'}
命令:
python prog.py tr.csv tr.gbdt.dense tr.gbdt.sparse -cvt_path converters/pre-a.py -s 2
输出结果:
Namespace(cvt_path='converters/pre-a.py', dst1_path='tr.gbdt.dense', dst2_path='tr.gbdt.sparse', nr_thread=2, src_path='tr.csv')
{'src_path': 'tr.csv', 'nr_thread': 2, 'dst1_path': 'tr.gbdt.dense', 'cvt_path': 'converters/pre-a.py', 'dst2_path': 'tr.gbdt.sparse'}
命令:
可选参数一个都不传进去
python prog.py tr.csv tr.gbdt.dense tr.gbdt.sparse
Namespace(cvt_path=None, dst1_path='tr.gbdt.dense', dst2_path='tr.gbdt.sparse', nr_thread=12, src_path='tr.csv')
{'cvt_path': None, 'src_path': 'tr.csv', 'dst2_path': 'tr.gbdt.sparse', 'dst1_path': 'tr.gbdt.dense', 'nr_thread': 12}