|
大家好,我是水滴~~当处理命令行参数时,Python的argparse模块是一个强大而灵活的工具。它提供了一个简单且一致的方式来定义命令行参数、选项和子命令,并帮助你解析和验证用户提供的输入。本教程将详细介绍argparse模块的使用方法和常见用例。文章中包含大量的示例代码,希望能够帮助新手同学快速入门。本文收录于《Python入门核心技术》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。文章目录前言一、使用argparse模块1.1引入argparse模块1.2创建参数解析器1.3添加命令行参数1.4解析命令行参数1.5获取参数值二、各类参数实例2.1添加位置参数2.2添加可选参数2.3添加行为参数2.4添加短参数三、查看帮助信息总结前言在开发命令行工具或需要从命令行接收用户输入的Python程序中,处理命令行参数是一项常见任务。为了简化这一过程,Python提供了argparse模块,它能够帮助我们定义和解析命令行参数,并提供用户友好的命令行界面。本教程将详细介绍argparse模块的使用方法和常见用例,帮助你轻松处理命令行参数,提升程序的灵活性和易用性。一、使用argparse模块1.1引入argparse模块由于argparse模块是Python标准库中自带的模块,所以不需要安装,使用导入即可。下面代码使用import来导入argparse模块:importargparse11.2创建参数解析器在开始定义命令行参数之前,我们需要创建一个参数解析器对象。可以使用ArgumentParser类创建解析器。如下代码:parser=argparse.ArgumentParser(description='这是一个命令行参数示例')1上面代码创建了一个新的ArgumentParser参数解析器对象,为其名为parser,并传递了一个可选的description参数,用于描述你的程序或命令行工具的功能。ArgumentParser类还有很多可选的参数供我们使用,下面列出这些参数以及功能描述:prog-程序的名称(默认值s.path.basename(sys.argv[0]))usage-描述程序用途的字符串(默认值:从添加到解析器的参数生成)description-要在参数帮助信息之前显示的文本(默认:无文本)epilog-要在参数帮助信息之后显示的文本(默认:无文本)parents-一个ArgumentParser对象的列表,它们的参数也应包含在内formatter_class-用于自定义帮助文档输出格式的类prefix_chars-可选参数的前缀字符集合(默认值:‘-’)fromfile_prefix_chars-当需要从文件中读取其他参数时,用于标识文件名的前缀字符集合(默认值:None)argument_default-参数的全局默认值(默认值:None)conflict_handler-解决冲突选项的策略(通常是不必要的)add_help-为解析器添加一个-h/--help选项(默认值:True)allow_abbrev-如果缩写是无歧义的,则允许缩写长选项(默认值:True)exit_on_error-决定当错误发生时是否让ArgumentParser附带错误信息退出。(默认值:True)1.3添加命令行参数创建好参数解析器对象后,就可以使用add_argument()方法来添加参数了。参数分好几种,在第二章我们详细介绍。如下代码:parser.add_argument('--arg1',type=str,help='参数1')parser.add_argument('arg2',type=int,help='参数2')12上面代码中添加了两个参数:arg1和arg2,并使用type参数指定数据类型,使用help参数添加该选项的功能描述。add_argument()方法还有很多可选的参数供我们使用,下面列出这些参数以及功能描述:nameorflags-一个命名或者一个选项字符串的列表,例如foo或-f,--foo。action-当参数在命令行中出现时使用的动作基本类型,例如store_true。nargs-命令行参数应当消耗的数目。const-被一些action和nargs选择所需求的常数。default-当参数未在命令行中出现并且也不存在于命名空间对象时所产生的值。type-命令行参数应当被转换成的类型。choices-由允许作为参数的值组成的序列。required-此命令行选项是否可省略(仅选项可用)。help-一个此选项作用的简单描述。metavar-在使用方法消息中使用的参数值示例。dest-被添加到parse_args()所返回对象上的属性名。1.4解析命令行参数定义完命令行参数后,我们需要解析用户提供的命令行输入。使用parse_args()方法解析命令行参数:args=parser.parse_args()1parse_args()方法会解析命令行参数并返回一个args对象,其中包含了我们定义的参数的值。1.5获取参数值通过args对象,我们可以获取用户提供的命令行参数的值,并在程序中进行相应的处理:arg1_value=args.arg1arg2_value=args.arg212在上面的示例中,我们通过args.arg1和args.arg2来获取对应参数的值。二、各类参数实例在使用过程中,添加命令行参数的过程是多变的,下面我们通过一些实例来演示不同各类的参数的添加方法。2.1添加位置参数位置参数是必需的参数,它们没有前缀,直接跟在命令行中的位置上。使用add_argument()方法添加位置参数。创建一个argparse_test.pyPython程序,其如下代码:importargparse#1.创建参数解析器parser=argparse.ArgumentParser(description='这是一个解析命令行参数示例')#2.添加位置参数(positionalarguments)parser.add_argument('arg1',type=int,help='位置参数1')parser.add_argument('arg2',type=str,help='位置参数2')#3.解析命令行参数args=parser.parse_args()#4.获取并打印参数值print(args)print(args.arg1)print(args.arg2)12345678910111213141516add_argument()方法接受一些参数,其中最重要的是参数的名称、类型和帮助信息。在上面的示例中,我们定义了两个位置参数arg1和arg2,一个是整数类型,一个是字符串类型,并提供了相应的帮助信息。使用时,在命令行中python.\argparse_test.py10ABC,其中10和ABC为位置参数。$python.\argparse_test.py10ABCNamespace(arg1=10,arg2='ABC')10ABC1234位置参数是必填的,否则会报错:$python.\argparse_test.py10usage:argparse_test.py[-h]arg1arg2argparse_test.py:error:thefollowingargumentsarerequired:arg21232.2添加可选参数可选参数不是必需的,它们通常以双破折线--作为前缀。使用add_argument()方法添加可选参数,还可以指定其默认值。如下代码:importargparse#1.创建参数解析器parser=argparse.ArgumentParser(description='这是一个解析命令行参数示例')#2.添加位置参数(positionalarguments)parser.add_argument('--option1',type=str,help='可选参数1')parser.add_argument('--option2',type=str,help='可选参数2',default='a')parser.add_argument('--option3',type=str,help='可选参数3',default='a')#3.解析命令行参数args=parser.parse_args()#4.获取并打印参数值print(args)print(args.option1)print(args.option2)print(args.option3)123456789101112131415161718在可选参数的定义中,我们使用了--option1、--option2和--option3作为参数名,并提供了相应的帮助信息,还设置了它们的数据类型,--option2和--option3还设置了默认值。使用时,在命令行中输入python.\argparse_test.py--option3=ABC,只为--option3指定了值ABC,输出如下:$python.\argparse_test.py--option3=ABCNamespace(option1=None,option2='a',option3='ABC')NoneaABC12345可以看出,option1没有默认值,也没有输入值,其值为None;option2值为默认值a;option3值为输入值ABC。2.3添加行为参数行为参数是一种特殊的可选参数,它只有两个值True和False,用于标记使用。只需要在add_argument()方法中添加action参数,并将值设为store_true即可。如下代码:importargparse#1.创建参数解析器parser=argparse.ArgumentParser(description='这是一个解析命令行参数示例')#2.添加行为参数(actionarguments)parser.add_argument('--action1',action='store_true',help='行为参数1')parser.add_argument('--action2',action='store_true',help='行为参数2')#3.解析命令行参数args=parser.parse_args()#4.获取并打印参数值print(args)print(args.action1)print(args.action2)12345678910111213141516上面代码添加了两个行为参数:--action1和--action2,都为它们指定了action参数值为store_true。使用时,在命令行中输入python.\argparse_test.py--action1,输入时无需指定参数的值,这里只指定了--action1,输出如下:$python.\argparse_test.py--action1Namespace(action1=True,action2=False)TrueFalse1234从输出结果可以看出,指定了的--action1值为True,未指定的--action2值为False。2.4添加短参数还可以添加短参数,使用一个-指定短参数,例如'-f'。短参数可以独立使用,但我们通常和长参数共同使用:'-f','--foo'。如下代码:importargparse#1.创建参数解析器parser=argparse.ArgumentParser(description='这是一个解析命令行参数示例')#2.添加短参数parser.add_argument('-f','--foo',type=str,help='短参数')#3.解析命令行参数args=parser.parse_args()#4.获取并打印参数值print(args)print(args.foo)1234567891011121314这里需要说明一下,如果短参数和长参数同时指定,参数名为长参数的名字。在使用时,可以通过-f=ABC和--foo=ABC两个方式指定参数值:$python.\argparse_test.py-f=ABCNamespace(foo='ABC')ABC$python.\argparse_test.py--foo=ABCNamespace(foo='ABC')ABC1234567三、查看帮助信息可以使用-h或--help来查看我们添加的参数信息。下面是完整代码:importargparse#1.创建参数解析器parser=argparse.ArgumentParser(description='这是一个解析命令行参数示例')#2.添加位置参数(positionalarguments)parser.add_argument('arg1',type=int,help='位置参数1')parser.add_argument('arg2',type=str,help='位置参数2')#2.添加可选参数(optionsarguments)parser.add_argument('--option1',type=str,help='可选参数1')parser.add_argument('--option2',type=str,help='可选参数2',default='a')parser.add_argument('--option3',type=str,help='可选参数3',default='a')#2.添加行为参数(actionarguments)parser.add_argument('--action1',action='store_true',help='行为参数1')parser.add_argument('--action2',action='store_true',help='行为参数2')#2.添加短参数parser.add_argument('-f','--foo',type=str,help='短参数')#3.解析命令行参数args=parser.parse_args()#4.获取并打印参数值print(args)1234567891011121314151617181920212223242526查看帮助信息:$python.\argparse_test.py--helpusage:argparse_test.py[-h][--option1OPTION1][--option2OPTION2][--option3OPTION3][--action1][--action2][-fFOO]arg1arg2这是一个解析命令行参数示例positionalarguments:arg1位置参数1arg2位置参数2options:-h,--helpshowthishelpmessageandexit--option1OPTION1可选参数1--option2OPTION2可选参数2--option3OPTION3可选参数3--action1行为参数1--action2行为参数2-fFOO,--fooFOO短参数123456789101112131415161718可以看出,帮助信息将我们添加的参数信息都输出了。总结argparse模块是Python的一个标准库模块,用于处理命令行参数。通过argparse,我们可以定义位置参数和可选参数,并指定它们的类型、帮助信息以及其他选项。模块还提供了命令行帮助信息的自动生成功能,能够帮助用户理解和正确使用程序。在本教程中,我们学习了如何使用argparse模块的基本功能,包括创建参数解析器、添加位置参数和可选参数、解析命令行参数以及获取参数值。我们还演示了一个完整的示例,并给出了一些常见的命令行命令和输出。通过掌握argparse模块,你可以更有效地处理命令行参数,提升程序的交互性和易用性,为用户提供更好的体验。祝你在开发命令行工具或处理命令行参数时取得成功!
|
|