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调用cmd命令行制作刷博器
Jan 13 Python
Python中的with...as用法介绍
May 28 Python
python生成随机密码或随机字符串的方法
Jul 03 Python
Python实现购物系统(示例讲解)
Sep 13 Python
对python pandas读取剪贴板内容的方法详解
Jan 24 Python
python调用摄像头拍摄数据集
Jun 01 Python
基于python实现matlab filter函数过程详解
Jun 08 Python
PyTorch中Tensor的数据类型和运算的使用
Sep 03 Python
Python包资源下载路径报404解决方案
Nov 05 Python
Python如何把不同类型数据的json序列化
Apr 30 Python
给numpy.array增加维度的超简单方法
Jun 02 Python
python实现手机推送 代码也就10行左右
Apr 12 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
easyui的tabs update正确用法分享
2014/03/21 PHP
ExtJS 2.2.1的grid控件在ie6中的显示问题
2009/05/04 Javascript
javascript动态添加表格数据行(ASP后台数据库保存例子)
2010/05/08 Javascript
jQuery Select(单选) 模拟插件 V1.3.62 改进版
2010/07/17 Javascript
JavaScript编程开发中的五个实用小技巧
2010/07/22 Javascript
Firefox中autocomplete=&quot;off&quot; 设置不起作用Bug的解决方法
2011/03/25 Javascript
$.get获取一个文件的内容示例代码
2013/09/11 Javascript
三种方式获取XMLHttpRequest对象
2014/04/21 Javascript
跟我学Nodejs(三)--- Node.js模块
2014/05/25 NodeJs
js实现select下拉框菜单
2015/12/08 Javascript
JavaScript中的子窗口与父窗口的互相调用问题
2017/02/08 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
详解nodejs异步I/O和事件循环
2017/06/07 NodeJs
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
2018/04/17 jQuery
React通过redux-persist持久化数据存储的方法示例
2019/02/14 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
[01:02:45]完美世界DOTA2联赛 LBZS vs Forest 第三场 11.07
2020/11/09 DOTA
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
2015/04/01 Python
Python中的lstrip()方法使用简介
2015/05/19 Python
Python3.x对JSON的一些操作示例
2017/09/01 Python
python处理两种分隔符的数据集方法
2018/12/12 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
2019/05/03 Python
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
2019/05/13 Python
python实现动态创建类的方法分析
2019/06/25 Python
python射线法判断检测点是否位于区域外接矩形内
2019/06/28 Python
使用python 将图片复制到系统剪贴中
2019/12/13 Python
Linux安装Python3如何和系统自带的Python2并存
2020/07/23 Python
美国高档百货Nordstrom的折扣店:Nordstrom Rack
2017/11/13 全球购物
日本著名化妆品零售网站:Cosme Land
2019/03/01 全球购物
迎元旦广播稿
2014/02/22 职场文书
销售行政专员岗位职责
2014/06/10 职场文书
2014年乡镇卫生院工作总结
2014/11/24 职场文书
委托证明范本
2014/11/25 职场文书
车间班组长竞聘书
2015/09/15 职场文书
导游词之云南丽江-泸沽湖
2019/09/26 职场文书
使用compose函数优化代码提高可读性及扩展性
2022/06/16 Javascript