Python基础(二十一):argparse模块
创始人
2025-05-31 14:09:18
0
  1. 简介

argparse 模块主要用于处理 Python 命令行参数和选项,程序定义好所需参数后,该模块会通过 sys.argv 解析出那些参数;除此之外,argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。使用 argparse 模块,我们可以轻松的编写出用户友好的命令行接口。

2.使用

我们先来看一个简单示例:

import argparse# 创建解析对象
parser = argparse.ArgumentParser()
# 解析
parser.parse_args()

文件名为 test.py,在控制输入命令:python test.py --help,执行结果:

usage: test.py [-h]optional arguments:-h, --help  show this help message and exit

通过上面的执行结果,我们可以看出 Python 的可选参数包括:--help 和其简写 -h,Python 使用 - 来指定短参数,使用 -- 来指定长参数 ,我们执行一下 python test.py -h,执行结果:

usage: test.py [-h]optional arguments:-h, --help  show this help message and exit

如果使用未定义的参数会报错,如:执行命令 python test.py -a,执行结果:

usage: test.py [-h]
test.py: error: unrecognized arguments: -a

接下来我们看一下如何自定义参数,因为上面示例中 ArgumentParser() 和 parse_args() 函数,我们还没有详细说,所以这里我们也具体看一下:

ArgumentParser(prog=None, usage=None, description=None, epilog=None, parents=[], formatter_class=argparse.HelpFormatter, prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True, allow_abbrev=True)

这个方法是用来创建解析器对象的,看一下方法中每一个参数的含义:

  • prog:程序的名称(默认: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)

parse_args(args=None, namespace=None)

用来解析参数,看一下参数说明:

  • args:要分析的字符串列表,默认取自 sys.argv

  • namespace:命名空间

add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

定义单个的命令行参数应当如何解析,看一下参数说明:

  • name or flags:一个命名或者一个选项字符串的列表,例如:-f,--foo

  • action:当参数在命令行中出现时使用的动作基本类型

  • nargs:命令行参数应当消耗的数目

  • const:被一些 action 和 nargs 选择所需求的常数

  • default:当参数未在命令行中出现时使用的值

  • type:命令行参数应当被转换成的类型

  • choices:可用的参数的容器

  • required:此命令行选项是否可省略

  • help:一个选项作用的简单描述

  • metavar:在使用方法消息中使用的参数值示例

  • dest:被添加到 parse_args() 所返回对象上的属性名

下面我们通过具体示例看一下:

import argparseparser = argparse.ArgumentParser()
parser.add_argument('-n', '--name', dest='rname', required=True,help='increase output name')
args = parser.parse_args()
name = args.rname
print('Hello', name)

先在控制台执行命令 python test.py -h,执行结果:

usage: test.py [-h] -n RNAMEoptional arguments:-h, --help            show this help message and exit-n RNAME, --name RNAMEincrease output name

我们可以看到参数已经添加进来了,接着执行命令 python test.py -n Jhon 或 python test.py --name Jhon,执行结果:

Hello Jhon

从结果可以看出我们已经获取了控制台中输入的参数值了。

相关内容

热门资讯

MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
公司年会主持词范文 公司年会主...   以下是精彩的公司年会主持词范文的正文:  临近一年的结尾,年会成了一个企业、一个团队必不可少的盛...
最新或2023(历届)晚会主持...  主持人女:女士们!先生们!  主持人男:各位来宾、朋友们!  主持人女:大家!  合:晚上好!(鞠...
EL表达式JSTL标签库 EL表达式     EL:Expression Language 表达式语言     ...
超详细农村婚礼主持词 农村婚礼...   以下是超详细婚礼主持词的正文:  婚礼序曲  (在典礼正式开始前5分钟,新人和主宾都基本到齐以后...
关于婚礼主持词的开场白汇编 摄... 、尊敬的各位来宾、各位领导、女士们、先生们,大家好!金秋十月,阳光明媚,惠风送爽,欢声笑语,天赐吉祥...
经典校园文化艺术节主持人开场白...  主持人女:尊敬的各位领导、敬爱的老师!  主持人男:亲爱的同学们、各位来宾!  合:大家下午好! ...
最新或2023(历届)春晚二审...  网曝猴年春晚二审节目单 剧组辟谣:无趣(图)  今日,微博实名认证为“扒皮王”的娱乐评论人,发布了...
最新或2023(历届)有羊有马... 上联:画展春城描特色  下联:诗题羊石纪新春  上联:神骏回眸丰稔景  下联:灵羊翘首吉祥图  上联...
最新或2023(历届)鼠年春联... 上联:马蹄踊跃驰千里  下联:羊角扶摇上九霄  上联:马尾松劲承雨露  下联:羊毫妙笔点春光  上联...
最新或2023(历届)除夕跨年... 每天早晨,我都再一次提醒自己,生命短暂而美好,没时间纠结,没时间计较。只有放下那些无谓的负担,我们才...
最新或2023(历届)鼠年除夕... 最新或2023(历届)新年说说祝福大全一:过年要玩好,必须的;早餐别忘了,注意的;烟酒要减少,提醒的...
安全生产月主题标语 安全生产月... 1 强化安全基础,推动安全发展2 加强班组安全管理,弘扬企业安全文化。3 安全发展,科学发展4 事故...
建筑工地安全标语100条 建筑... 1、安全第一 预防为主2、人人讲安全 安全为人人3、人人讲安全,事事为安全;时时想安全,处处要安全 ...
交通安全警句标语 交通安全警句... 1、醉(罪)在酒中,毁(悔)在杯中。2、十次肇事九次快,莫和死神去比赛。3、文明礼让安全在,瞬间麻痹...
最新或2023(历届)跨年QQ... 【心情签名说说】 想找个坚强的理由,可诸多的疼该如何一笑而过;想有个慰藉的港口,可真正懂你的人又有几...
交通安全横幅标语,交通安全横幅... 街道办悬挂在路口的交通安全横幅标语:一人出车全家念 一人平安全家福
SpringBoot高校餐厅缴... SpringBoot高校餐厅缴费系统 帮朋友基于SpringBoot鲜花商城系统,订制...
【Spring从成神到升仙系列... 👏作者简介:大家好,我是爱敲代码的小黄,独...
人生励志签名100句,qq人生... 1、知识愈浅,自信愈深。——苏联   2、勇敢乃是自信与害怕中间之道。——(希腊)亚里士多德  3、...