argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块。argparse模块的作用是用于解析命令行参数。

最基础的,从一个最简单的程序开始:

 import argparse
parser = argparse.ArgumentParser()

运行结果:

 $ python .py
$

 

定位参数:

 import argparse
parser=argparse.ArgumentParser() parser.add_argument("echo")
parser.add_argument("hello") args = parser.parse_args() print args.ehco

运行:

 $python .py
usage: .py [-h] echo hello
.py: error: too few arguments $python .py echo
usage: .py [-h] echo hello
.py: error: too few arguments $python .py echo hello
echo

方法add_argument(),用来指定程序需要接受的命令参数;

并且argparse是默认字符串,如果以数字形式输入会报错,如下面代码所示:

 import argparse
parser=argparse.ArgumentParser()
parser.add_argument("echo", help="echo the string you use here")
args=parser.parse_args()
print args.echo*10

运行:

$ python .py
Traceback (most recent call last):
File "1.py", line , in <module>
print args.square**
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'

必须将代码增加type=你需要的类型(像这里需要int类型):

 import argparse
parser=argparse.ArgumentParser()
parser.add_argument("echo", help="echo the string you use here", type=int)
args=parser.parse_args()
print args.echo*10

--help:

虽然现在帮助信息已经很美观了,但是还不够好。例如我们知道echo是个定位参数,但是却不知道该参数的意思,只能通过猜或者读源码。下面,我们可以让它更有帮助:

 import argparse
parser = argparse.ArgumentParser()
parser.add_argument("echo", help="echo the string you use there")
args = parser.parser_args()
print args.echo

运行:

 $ python 1.py -h
usage: 1.py [-h] echo positional arguments:
echo echo the string you use here optional arguments:
-h, --help show this help message and exit

参考类型:

一般来说,如果不指定参数类型的话,argparse默认为字符串类型,可以通过type来指定;

 import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", help="display a square of a given number", type=int)
args = parser.parse_args()
print args.square**2

还可以使用default=xx来指定默认参数的值,例如:

 parser.add_argument("echo", action="count", default=0)

可选参数:

 import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--verbosity", help="increase output verbosity")
args = parser.parse_args()
if args.verbosity:
print "verbosity turned on"

运行:

$ python .py --verbosity
verbosity turned on
$ python .py
$ python .py --help
usage: prog.py [-h] [--verbosity VERBOSITY]

关于可选参数还有一个简写

 import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-vwww", "--verbose", help="increase output verbosity", action="store_true")
args = parser.parse_args()
if args.verbose:
print "verbosity turned on"

这里的-vww就是其简写,action: store_true / store_false:布尔开关。 store_true.默认为False,输入则为true。 store_flase 相反;

 $ python prog.py -v
verbosity turned on
$ python prog.py --help
usage: prog.py [-h] [-v] optional arguments:
-h, --help show this help message and exit
-v, --verbose increase output verbosity

在命令行中只要-v和-vwww前面一致就行,如果是-vp就会报错;如果是-vw,默认是-vwww,也个23是正确的;

注意:

 parser.add_argument("-v", "--verbose", action="store_true",help="increase output verbosity")

这些是没有顺序的,当然也可以像上面一样了;

参数冲突:

迄今为止,我们已经使用到了[argparse.ArgumentParser][6]的两个方法,来看看他的另一个方法add_mutually_exclusive_group()。它可以让我们指定某个参数和其他参数冲突。下面来修改下程序以对这个新方法有更多的了解:我们将加入参数--quiet,它和参数--verbose冲突,不能同时指定:

 import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-v", "--verbose", type=int, help="the base")
parser.add_argument("-q", "--quiet", type=int, help="the exponent") args = parser.parse_args()
if args.quiet:
print ""
elif args.verbose:
print ""

运行:

 $python .py -v -q
$

另一个方法add_mutually_exclusive_group():

 import argparse

 parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group()
group.add_argument("-v", "--verbose", action="store_true")
group.add_argument("-q", "--quiet", action="store_true") 
7 if args.quiet:
8     print "111111"
9 elif args.verbose:
10     print "222222"

运行:

 python .py -v -q
usage: .py [-h] [-v | -q]
test.py: error: argument -q/--quiet: not allowed with argument -v/--verbose

表明了可以使用-v或者-q,但是不能同时使用。

python中的argparse的更多相关文章

  1. python中的argparse模块

    argparse干什么用的? 答:参数设置,比如python demo.py -h 诸如此类的. 开始学习这个模块: parser = argparse.ArgumentParser() #使用这个模 ...

  2. python中的argparse模块学习

    该模块是python用于解析命令行和参数的标准模块 好文推荐:http://blog.ixxoo.me/argparse.html,不仅域名个性,文章翻译的也很好.推荐

  3. python中的argparse模块(参数解析)

    import argparseparse = argparse.ArgumentParser()parse.add_argument("a", help="params ...

  4. python中argparse模块用法实例详解

    python中argparse模块用法实例详解 这篇文章主要介绍了python中argparse模块用法,以实例形式较为详细的分析了argparse模块解析命令行参数的使用技巧,需要的朋友可以参考下 ...

  5. Python模块学习 - Argparse

    argparse模块 在Python中,argparse模块是标准库中用来解析命令行参数的模块,用来替代已经过时的optparse模块.argparse模块能够根据程序中的定义从sys.argv中解析 ...

  6. python中argparse

    python中argparse 在很多编程语言中,运行程序可以直接使用function(a,b,……)运行程序,但是在python中就无法实现,那么我们如何在命令行中传递参数呢?在python的中,有 ...

  7. python中argparse模块简单使用

    python中argparse模块简单使用 简介 argparse是python用于解析命令行参数和选项的标准模块.argparse模块的作用是用于解析命令行参数. 使用步骤 1.首先导入该模块 2. ...

  8. 《构建之法》教学笔记——Python中的效能分析与几个问题

    <构建之法:现代软件工程>中第2章对效能分析进行了介绍,基于的工具是VSTS.由于我教授的学生中只有部分同学选修了C#,若采用书中例子讲解,学生可能理解起来比较困难.不过所有这些学生都学习 ...

  9. python中导入一个需要传参的模块

    最近跑实验,遇到了一个问题:由于实验数据集比较多,每次跑完一个数据集就需要手动更改文件路径,再将文件传到服务器,再运行实验,这样的话效率很低,必须要专门看着这个实验,啥时候跑完就手动修改运行下一个实验 ...

随机推荐

  1. 每天一个linux命令(12):more命令

    more命令,功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上. more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会 ...

  2. django获取指定列的数据

    django获取指定列的数据 model一般都是有多个属性的,但是很多时候我们又只需要查询特定的某一个,这个时候可以用到values和values_list [values()](https://do ...

  3. 关于页面查询多数据查询问题(foreach)

    最近纠结的一个问题,就是页面综合查询总报错,之前用过传参用list传就没问题,但现在用map总是报错,缓释直接贴图吧,希望对遇到问题的朋友有帮助页面传来参数,之前是 这样写的,直接将拿来的数据封装成一 ...

  4. angularjs之插件ngRoute和ngAnimate

    使用ngRoute和ngAnimate配合使用,可以实现页面切换的效果. 如果有使用过swiper,就知道这个效果是怎么样的. 代码: <!DOCTYPE html> <html l ...

  5. Yii的学习(4)--Active Record

    摘自Yii官网:http://www.yiiframework.com/doc/guide/1.1/zh_cn/database.ar 在官网原文的基础上添加了CDbCriteria的详细用法. 虽然 ...

  6. Jeet – 先进,直观,灵活的 CSS 网格系统

    Jeet 是一个先进的,直观的 CSS 网格系统.通过使用预处理器的强大功能,我们现在可以通过实际分数(或者浮点数)来生成一个基于百分比宽度和间隔的网格.让你用更少的代码,更快的速度构建页面布局. 您 ...

  7. javascript学习5

    JavaScript Array(数组)对象 数组对象的作用是:使用单独的变量名来存储一系列的值. 实例 创建数组 创建数组,为其赋值,然后输出这些值. For...In 声明 使用 for...in ...

  8. Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 1755 (CrBrowserMain)问题

  9. Android Permission中英对照

    android.permission.ACCESS_CHECKIN_PROPERTIESAllows read/write access to the "properties" t ...

  10. java虚拟机启动参数分类详解

    官方文档见: http://docs.sun.com/source/819-0084/pt_tuningjava.html java启动参数共分为三类:其一是标准参数(-),所有的JVM实现都必须实现 ...