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. 玩转Django的POST请求 CSRF

    玩转Django的POST请求 CSRF 不少麻油们玩django都会碰到这个问题,POST请求莫名其妙的返回 403 foribidden,希望这篇博文能解答所有问题 三种方法 To enable ...

  2. Windows Server 2012部署Enterprise Solution 5.4

    最近一个客户升级系统,改用Windows Server 2012作为服务器操作系统.升级之后性能未见明显的改善,在不改变代码的基础上,考虑到C/S架构的能力,增加内存或是处理器的处理能力似乎可以解决一 ...

  3. 为什么MVC不是一种设计模式

    http://damoqiongqiu.iteye.com/blog/1949256 ---比较Backbone和Ext4.x在MVC实现上的差异 大漠穷秋 前言 圣人云:不想做妈咪的小姐不是好码农. ...

  4. NGUI 可裁剪的灰度Shader

    Shader "Custom/Unlit - Transparent Colored Grayed (SoftClip)" { Properties { _MainTex (&qu ...

  5. java中有关线程的题目

    1,看一下下面程序错误发生在哪一行! class Test implements Runnable{ public void run(Thread t){ } } 2,输出结果是什么? class T ...

  6. maven -- 学习笔记(三)之搭建nexus私服

    下载和安装nexus (1)官网链接http://www.sonatype.org/nexus/archived/ (直接点击下载链接,发现下载不了,FQ+迅雷就可以下载) (2)解压到指定文件夹,然 ...

  7. 云计算之路-阿里云上:消灭“黑色n秒”第三招——禁用网卡的TCP/IP Offload

    程咬金有三板斧,我们有三招.在这篇博文中我们要出第三招,同时也意味着昨天在“希望的田野”上的第二招失败了. 前两招打头(CPU)不凑效,这一招要换一个部位,但依然要坚持攻击敌人最弱(最忙最累)部位的原 ...

  8. Tomcat7.0启动报错:java.lang.illegalargumentexception:taglib definition not consisten with specification version

    Tomcat7.0启动报错:java.lang.illegalargumentexception:taglib definition not consisten with specification ...

  9. 【深入BFC】 关于CSS中float布局,清除浮动,和margin合并的原理解析,解开你心中的那些困惑!

    BFC的通俗理解: Block Formatting Context(块级格式化上下文)是W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用. ...

  10. 新人学习Android开发遇到的小问题总结

    1. IDE搭建: 搭建android的IDE时,先注意是什么版本的系统,64/32位系统. 通常使用的是Eclipse for android,Android Studio由于还需要FQ,网速慢,所 ...