python argparse使用
在不同环境部署项目时,由于不同的配置,部署时难免会改变部署的方式,而且基本使用版本管理工具,比如git或svn进行下拉代码部署项目时,尽可能的不变动代码(如果变动代码,下次下拉代码前必须要使用git reset --hard命令恢复代码,较为麻烦)而达到成功部署的目的。
解决方案之一是 在启动命令时添加参数,通过这个参数指定不同的配置文件从而达到部署不同环境的效果
使用的包为 argparse 。如下为使用案例。
# -*- coding: utf-8 -*- # (C) Guangcai Ren <renguangcai@jiaaocap.com> # All rights reserved # create time '2019/3/1 9:49' import argparse import sys parser = argparse.ArgumentParser(prog="argparse test", usage='python start.py -i develop -b heartbeat', description="Test args input!", epilog="Thanks for use this test") # 设置 可选参数范围 parser.add_argument("-a", "--al", type=str, default='default', choices=['default', 'develop', 'product'], help="""-a:入参名 --al:调用此入参的变量 type:入参值类型 default:默认值 choices:参数值范围; 使用案例:python argparse_rgc.py -a develop ; 调用方法:args = parser.parse_args() al=args.al # develop""") # 调用时返回 True 或 False,通过 action 参数设置 parser.add_argument("-b", "--bl", default=False, action='store_true', help="""action:store_true 只要带参数 -b ,则存储变量值为True,默认是 False; 使用案例:python argparse_rgc.py -b # 值为 True python argparse_rgc.py # 值为 False """) # 设置 参数值的个数 parser.add_argument("-c", "--cl", default=None, nargs=3, type=int, help="""args:设置值的个数,可以指定值的类型,并放到一个list中; 使用案例:python argparse_rgc.py -c 1 2 3 # 值为 [1,2,3]""") # 把一个参数所有的值都放在一个list中,不限制值的个数 parser.add_argument("-al", "--ar", nargs='*', type=int, help="""nargs:设置为*; 使用案例:python start.py -al 1 2 3 4 # 值为 [1,2,3,4]""") # 读文件 parser.add_argument("-f", "--infile", default=sys.stdin, nargs='?', type=argparse.FileType('r'), help="""type参数设置为FileType('r') 使用案例:python start.py -f file.txt # <_io.TextIOWrapper name='<stdin>' mode='r' encoding='utf-8'> """) # 设置 获取变量的变量名 parser.add_argument("-d", "--de", dest='des', nargs='*', help="""dest参数设置为 需要的变量名; 使用案例:python start.py -d iero args = parser.parse_args() dest= args.des """) args = parser.parse_args() print(args)
其他参数解析包如下:
sys.argv
optparse
官方网址:
https://docs.python.org/3/library/argparse.html#argparse.ArgumentParser.parse_args