一、argparse库介绍
1、argparse库是python自带库,不用特殊安装
2、argparse库是可以很好的解析命令行参数。即将python <文件名> -a -b --path
等-a、-b、–path这些的命令行参数值解析并保存起来,以供程序使用。
二、关于命令行参数的一些说明
命令行参数分为必选参数和可选参数。
- 必选参数:
又名位置参数,即在参数值不需要跟在参数名后面,而是通过在命令行里的相对位置来决定其属于哪个参数,且该参数值不可缺少。 - 可选参数
顾名思义,在命令行里可有可无,这取决于实际情况。参数值需要跟在以-或者–开头的参数名之后,由空格分隔开来。
三、代码示例即部分参数详解
import sys
import argparse
from xmlrpc.client import boolean
def try_print(args):
for name, value in vars(args).items():
print(f"{name}: {value}")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="测试命令行参数解析器")
# 变量名前不加-或者--,表示该命令行参数为必须参数
parser.add_argument("path")
# 加上-或者--,表示该命令行参数为可选参数
parser.add_argument("-p", "--port")
# help:添加命令行参数备注,指定该命令行参数的说明信息。在执行-h或者--help时起作用
parser.add_argument("-P", help="添加参数备注")
# default:添加默认值。如果没有指定该命令行参数,则将默认值保存到变量里。
parser.add_argument("--name", default="Kenny")
# type:添加命令行参数值的类型校验,校验规则遵守类型转换,即1可通过int、str和boolean等校验规则,"1"可通过str、boolean等校验规则。
parser.add_argument("--age", type=boolean)
# choices:添加命令行参数值的备选值校验,即该命令行参数的参数值只能在choices里选择。区分大小写。
# 不与default冲突,即default值可不在choices里,但一旦指定该命令行参数后,default设定失效,备选值按照choince的规则校验。
parser.add_argument("--country", choices=["cn", "us"])
# action:修改识别到命令行参数后的处理方式:
# store:直接保存命令行参数后的参数值到变量里。
# store_true:根据命令行参数值内容,将True或者False保存到变量里。
# store_const:与const参数共同使用,如果指定了该命令行参数,则将const的值保存到变量里。
# append:若命令行里多次出现该命令行参数且均指定了参数值,则将这些命令行参数值以列表的形式保存到变量里。
parser.add_argument("--email", action="append")
# const: 与action="store_const"参数一起使用。表示如果携带了该命令行参数,则将变量设定为const的值。
parser.add_argument("--localhost", const="True", action="store_const")
# nargs:允许命令行中该命令行参数后面跟多个命令行参数值,并以列表的形式将这些命令行参数值保存到变量里。
# N: 允许命令行参数值的绝对数量,不可多也不可少。
# *:允许任意个命令行参数值。
# +:允许至少一个命令行参数。
# ?:允许0个或1个命令行参数。
parser.add_argument("--likes", nargs='*')
# dest:默认解析器解析的命令行参数值保存在--或者-之后的变量里,使用dest参数后,可以将命令行参数值保存在指定的变量里。
parser.add_argument("--append", dest="value")
args = parser.parse_args()
print(args, end="\n\n")
try_print(args)