参考标准库 argparse模块
模块内容很多,可以过一遍,不必深记,记住大概有这个东西,需要的时候,ctrl+F,直接就可以找到,拿过来用。
创建解析器对象
import argparse
# 创建一个解析器对象
parser = argparse.ArgumentParser(
prog="程序的名称,(默认sys.argv[0])",
usage="脚本的作用,该脚本用来做什么",
description="最开始的提示文字",
epilog="结尾处的帮助文字"
)
# 解析参数
args = parser.parse_args()
效果展示:
添加参数
分为添加位置参数-positional arguments和可选参数-optional arguments
位置参数
添加位置参数声明的参数名前缀不带-或--,按照顺序进行解析,在命令中必须出现,否则报错,命令通常为:
import argparse
# 创建一个解析器对象
parser = argparse.ArgumentParser(
prog="程序的名称,(默认sys.argv[0])",
usage="脚本的作用,该脚本用来做什么",
description="最开始的提示文字",
epilog="结尾处的帮助文字"
)
# 添加位置参数,按顺序解析
parser.add_argument("a")
parser.add_argument("b")
parser.add_argument("c")
# 解析参数
args = parser.parse_args()
效果展示:
可选参数
添加可选参数声明的参数名前缀带-或--,前缀是-的为短参数,前缀是--是长参数,两者可以都有,也可以只有一个,短参数和长参数效果一样。可选参数的值接在位置参数的后面,不影响位置参数的解析顺序,可选参数执行脚本的时候不是必须带上的。
import argparse
# 创建一个解析器对象
parser = argparse.ArgumentParser(
prog="程序的名称,(默认sys.argv[0])",
usage="脚本的作用,该脚本用来做什么",
description="最开始的提示文字",
epilog="结尾处的帮助文字"
)
# 添加位置参数,按顺序解析
# parser.add_argument("a")
# parser.add_argument("b")
# parser.add_argument("c")
# 添加可选参数,可选参数需要跟在位置参数的后面
parser.add_argument("-a", "--aa", help="aa的帮助提示", default="aa_test")
parser.add_argument("-b", "--bb", help="bb的帮助提示", default="bb_test")
parser.add_argument("-c", "--cc", help="cc的帮助提示", default="cc_test")
# 解析参数
args = parser.parse_args()
# 输入参数信息
print(args)
print(args.aa)
print(args.bb)
print(args.cc)
效果展示:
子解析器
将其功能拆分为一系列子命令
import argparse
# 创建一个解析器对象
parser = argparse.ArgumentParser(
prog="test",
usage="脚本%(prog)s的作用,该脚本用来做什么",
description="最开始的提示文字%(prog)s",
epilog="结尾处的帮助文字%(prog)s"
)
subparser = parser.add_subparsers(
dest="subparser",
description="子解析器"
)
# 二选一
# python3 main.py jia ...
# python3 main.py jian ...
jia = subparser.add_parser("jia", help="加法")
jian = subparser.add_parser("jian", help="减法")
# default表示参数变量默认是多少,required表示当前参数是必填项,不然会报错
# python3 main.py jia -o 1
jia.add_argument("-o", "--one", help="第一个数字", default=0, required=True)
# python3 main.py jia -t 2
jia.add_argument("-t", "--two", help="第二个数字", default=0, required=True)
# python3 main.py jian --one 2
jian.add_argument("-o", "--one", help="第一个数字", default=0, required=True)
# python3 main.py jian --two 1
jian.add_argument("-t", "--two", help="第二个数字", default=0, required=True)
args = parser.parse_args()
print(args)
print(args.one)
print(args.two)
效果展示
执行加法,设置一个函数
import argparse
def fun_jia(args):
print(args)
one = args.one
two = args.two
sum = one + two
print(f"{one} + {two} = {sum}")
# 创建一个解析器对象
parser = argparse.ArgumentParser(
prog="test",
usage="脚本%(prog)s的作用,该脚本用来做什么",
description="最开始的提示文字%(prog)s",
epilog="结尾处的帮助文字%(prog)s"
)
subparser = parser.add_subparsers(
dest="subparser",
description="子解析器"
)
jia = subparser.add_parser("jia", help="加法")
jia.add_argument("-o", "--one", help="第一个数字", default=0, required=True, type=int)
jia.add_argument("-t", "--two", help="第二个数字", default=0, required=True, type=int)
jia.set_defaults(func=fun_jia)
args = parser.parse_args()
args.func(args)