Python-argparse模块-获取命令行参数

#!/usr/bin/python3
"""
    Author   : Jet Bi
    License  : www.cyeap.com
    Summary  : 获取命令行的参数
    Notes    : 在Linux系统上写脚本时,会有给脚本传参的需求,可以通过argparse模块来获取传递的参数的值
"""

# 导入argparse模块
import argparse

# 1.获取参数解析对象
parser = argparse.ArgumentParser(description="帮助信息前的一些描述信息,可以不写哦")

# 2.添加可解析的参数
# add_argument()函数常用参数
#     name or flags    选项字符串的名字或列表,例如foo或者 -f, --foo
#     nargs            应该读取命令行参数数目,允许的值有
#                      N(N为数字)   代表必须要有N个参数
#                      '*'          代表可以有任意个参数
#                      '?'         代表可以有0或1个参数
#                      '+'          代表至少要有一个参数
#                      如果指定了nargs且值为多个的时候,那么它返回的是一个列表
#     default          参数的默认值
#     type             命令行参数应该被转换成的类型(默认读取成字符串)
#     choices          参数可允许的值的一个容器,即有效的参数
#     required         参数是否是必须的
#     help             参数的简短描述
#     action           值可选 store_true 或 store_false
parser.add_argument("-a", "--app", default=0, type=int, choices=range(1, 10), help="app's code")
parser.add_argument("first_arg", nargs=3)    # 位置参数
parser.add_argument("second_arg")            # 位置参数
parser.add_argument("-s", "--student", nargs=2, help="sub need two", required=True)
parser.add_argument("-y", action='store_true')     # 选项可以不要参数,有-y就为True,没有则为False

# 3.解析参数
# parse_args()会返回一个设计的非常简单的namespace对象
# 当调用parse_args()时,可选的参数将以 - 前缀标识,剩余的参数将被假定为位置参数
# 注意: 位置参数是必须的
namespace = parser.parse_args()

# 4.从解析出来的namespace对象中获取参数值
# 注意:
#     如果add_argument()中,给予了类似于-a, --app这种参数方式
#     那么在传递的时候可以使用-a 来传递,但解析到namespace对象中的只有app一个属性,即使用namespace.a是识别不出来的
print(namespace)
print(namespace.app)
print(namespace.y)

posted on 2020-06-22 02:35  AustralGeek  阅读(217)  评论(0编辑  收藏  举报

导航