您的位置:首页 > 编程语言 > Python开发

Python Argparse模块的使用例子,往python脚本传参数

2015-11-19 17:02 776 查看
直接可套用的代码样例,只需要根据实际需求增加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}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: