python中argparse模块用法实例详解


Posted in Python onJune 03, 2015

本文实例讲述了python中argparse模块用法。分享给大家供大家参考。具体分析如下:

平常在写命令行工具的时候,经常会带参数,所以用python中的argparse来实现。

# -*- coding: utf-8 -*- 
import argparse 
args = "-f hello.txt -n 1 2 3 -x 100 -y b -z a -q hello @args.txt i_am_bar -h".split()  
# 使用@args.txt要求fromfile_prefix_chars="@" 
# args.txt文件中应该一行一个参数,想改变行为参考convert_arg_line_to_args()
# ArgumentParser参数的简单说明 
## description - 命令行帮助的开始文字,大部分情况下,我们只会用到这个参数 
# epilog - 命令行帮助的结尾文字 
# prog - (default: sys.argv[0])程序的名字,一般不需要修改,另外,如果你需要在help中使用到程序的名字,可以使用%(prog)s 
# prefix_chars - 命令的前缀,默认是-,例如-f/--file。有些程序可能希望支持/f这样的选项,可以使用prefix_chars="/" 
# fromfile_prefix_chars - (default: None)如果你希望命令行参数可以从文件中读取,就可能用到。例如,如果fromfile_prefix_chars='@',命令行参数中有一个为"@args.txt",args.txt的内容会作为命令行参数 
# add_help - 是否增加-h/-help选项 (default: True),一般help信息都是必须的,所以不用设置啦。 
## parents - 类型是list,如果这个parser的一些选项跟其他某些parser的选项一样,可以用parents来实现继承,例如parents=[parent_parser] 
## formatter_class - 自定义帮助信息的格式(description和epilog)。默认情况下会将长的帮助信息进行<自动换行和消除多个连续空白>。 
#三个允许的值: 
# class argparse.RawDescriptionHelpFormatter 直接输出description和epilog的原始形式(不进行自动换行和消除空白的操作) 
# class argparse.RawTextHelpFormatter 直接输出description和epilog以及add_argument中的help字符串的原始形式(不进行自动换行和消除空白的操作) 
## class argparse.ArgumentDefaultsHelpFormatter 在每个选项的帮助信息后面输出他们对应的缺省值,如果有设置的话。这个最常用吧! 
# argument_default - (default: None)设置一个全局的选项的缺省值,一般每个选项单独设置,所以这个参数用得少,不细说 
# usage - (default: generated)如果你需要修改usage的信息(usage: PROG [-h] [--foo [FOO]] bar [bar ...]),那么可以修改这个,一般不要修改。 
# conflict_handler - 不建议使用。这个在极端情况下才会用到,主要是定义两个add_argument中添加的选项的名字发生冲突时怎么处理,默认处理是抛出异常。 
#注释一行有##表示这几个参数比较常用 
parser = argparse.ArgumentParser(description="This is a description of %(prog)s", epilog="This is a epilog of %(prog)s", prefix_chars="-+", fromfile_prefix_chars="@", formatter_class=argparse.ArgumentDefaultsHelpFormatter) 
# ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest]) 
# add_argument的参数是比较复杂的。。。 
# name or flags - 指定参数的形式,想写几个写几个,不过我们一般就写两个,一个短参数,一个长参数,看下面的例子"-f", "--file" 
# 可选的选项,位置不固定,想怎么写就怎么写,默认是可选的 
parser.add_argument("-f", "--file", help="test test test") 
# 位置固定的选项,例如"prog i_am_bar",这样子的话,i_am_bar就是bar选项的值啦,默认是必须有的 
parser.add_argument("bar", help="test test test") 
# nargs - 指定这个参数后面的value有多少个,例如,我们希望使用-n 1 2 3 4,来设置n的值为[1, 2, 3, 4] 
parser.add_argument("-n", "--num", nargs="+", type=int) 
# 这里nargs="+"表示,如果你指定了-n选项,那么-n后面至少要跟一个参数,+表示至少一个,?表示一个或0个,*0个或多个, 
# default - 如果命令行没有出现这个选项,那么使用default指定的默认值 
parser.add_argument("+g", "++gold", help="test test test", default="test_gold")#需要prefix_chars包含"+" 
# type - 如果希望传进来的参数是指定的类型(例如 float, int or file等可以从字符串转化过来的类型),可以使用 
parser.add_argument("-x", type=int) 
# choices - 设置参数值的范围,如果choices中的类型不是字符串,记得指定type哦 
parser.add_argument("-y", choices=['a', 'b', 'd']) 
# required - 通常-f这样的选项是可选的,但是如果required=True那么就是必须的了 
parser.add_argument("-z", choices=['a', 'b', 'd'], required=True) 
# metavar - 参数的名字,在显示 帮助信息时才用到. 
parser.add_argument("-o", metavar="OOOOOO") 
# help - 设置这个选项的帮助信息 
# dest - 设置这个选项的值就是解析出来后放到哪个属性中 
parser.add_argument("-q", dest="world")  
args = parser.parse_args(args) # 如果你没有args参数,那么就使用sys.argv,也就是命令行参数啦。有这个参数,就方便我们调试啊 
# args.world就是-q的值啦 
# action - The basic type of action to be taken when this argument is encountered at the command line. 
# const - A constant value required by some action and nargs selections.
# 这两个自己看帮助文档啦,比较复杂 
# http://docs.python.org/library/argparse.html 
print args

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python中删除文件的程序代码
Mar 13 Python
Django项目中包含多个应用时对url的配置方法
May 30 Python
python批量获取html内body内容的实例
Jan 02 Python
Python 支付整合开发包的实现
Jan 23 Python
python中时间、日期、时间戳的转换的实现方法
Jul 06 Python
Python学习笔记之文件的读写操作实例分析
Aug 07 Python
python logging日志模块原理及操作解析
Oct 12 Python
Python 实现递归法解决迷宫问题的示例代码
Jan 12 Python
Python 动态变量名定义与调用方法
Feb 09 Python
解决django的template中如果无法引用MEDIA_URL问题
Apr 07 Python
Python使用tkinter实现小时钟效果
Feb 22 Python
PyQt5实现多张图片显示并滚动
Jun 11 Python
Python中的推导式使用详解
Jun 03 #Python
对于Python装饰器使用的一些建议
Jun 03 #Python
Python模块搜索概念介绍及模块安装方法介绍
Jun 03 #Python
Python使用ftplib实现简易FTP客户端的方法
Jun 03 #Python
Python中的深拷贝和浅拷贝详解
Jun 03 #Python
python下paramiko模块实现ssh连接登录Linux服务器
Jun 03 #Python
python处理二进制数据的方法
Jun 03 #Python
You might like
php XPath对XML文件查找及修改实现代码
2011/07/27 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
2015/10/19 PHP
PHP数组函数知识汇总
2016/05/12 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
2017/03/14 PHP
PHP实现浏览器中直接输出图片的方法示例
2018/03/14 PHP
laravel-admin的多级联动方法
2019/09/30 PHP
jquery text,radio,checkbox,select操作实现代码
2009/07/09 Javascript
javascript动态添加、修改、删除对象的属性与方法详解
2014/01/27 Javascript
JS使用oumousemove和oumouseout动态改变图片显示的方法
2015/03/31 Javascript
js脚本分页代码分享(7种样式)
2015/08/19 Javascript
通过node-mysql搭建Windows+Node.js+MySQL环境的教程
2016/03/01 Javascript
JavaScript隐式类型转换
2016/03/15 Javascript
精彩的Bootstrap案例分享 重点在注释!(选项卡、栅格布局)
2016/07/01 Javascript
JS如何设置iOS中微信浏览器的title
2016/11/22 Javascript
基于JavaScript实现屏幕滚动效果
2017/01/18 Javascript
node文件上传功能简易实现代码
2017/06/16 Javascript
angularjs数组判断是否含有某个元素的实例
2018/02/27 Javascript
JavaScript解决浮点数计算不准确问题的方法分析
2018/07/09 Javascript
微信小程序实现横向增长表格的方法
2018/07/24 Javascript
探索JavaScript中私有成员的相关知识
2019/06/13 Javascript
JS为什么说async/await是generator的语法糖详解
2019/07/11 Javascript
Node.js API详解之 console模块用法详解
2020/05/12 Javascript
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
Python 使用os.remove删除文件夹时报错的解决方法
2017/01/13 Python
python selenium UI自动化解决验证码的4种方法
2018/01/05 Python
Python基于多线程实现抓取数据存入数据库的方法
2018/06/22 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
2019/04/05 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
2019/04/28 Python
美国在线购买空气净化器、除湿器、加湿器网站:AllergyBuyersClub
2021/03/16 全球购物
介绍一下EJB的体系结构
2012/08/01 面试题
毕业生的自我评价范文
2013/12/31 职场文书
《春笋》教学反思
2014/04/15 职场文书
安康杯竞赛活动总结
2014/05/05 职场文书
领导干部作风建设自查报告
2014/10/23 职场文书
导师工作推荐信
2015/03/27 职场文书
《我是什么》教学反思
2016/02/16 职场文书