python中的argparse
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的更多相关文章
- python中的argparse模块
argparse干什么用的? 答:参数设置,比如python demo.py -h 诸如此类的. 开始学习这个模块: parser = argparse.ArgumentParser() #使用这个模 ...
- python中的argparse模块学习
该模块是python用于解析命令行和参数的标准模块 好文推荐:http://blog.ixxoo.me/argparse.html,不仅域名个性,文章翻译的也很好.推荐
- python中的argparse模块(参数解析)
import argparseparse = argparse.ArgumentParser()parse.add_argument("a", help="params ...
- python中argparse模块用法实例详解
python中argparse模块用法实例详解 这篇文章主要介绍了python中argparse模块用法,以实例形式较为详细的分析了argparse模块解析命令行参数的使用技巧,需要的朋友可以参考下 ...
- Python模块学习 - Argparse
argparse模块 在Python中,argparse模块是标准库中用来解析命令行参数的模块,用来替代已经过时的optparse模块.argparse模块能够根据程序中的定义从sys.argv中解析 ...
- python中argparse
python中argparse 在很多编程语言中,运行程序可以直接使用function(a,b,……)运行程序,但是在python中就无法实现,那么我们如何在命令行中传递参数呢?在python的中,有 ...
- python中argparse模块简单使用
python中argparse模块简单使用 简介 argparse是python用于解析命令行参数和选项的标准模块.argparse模块的作用是用于解析命令行参数. 使用步骤 1.首先导入该模块 2. ...
- 《构建之法》教学笔记——Python中的效能分析与几个问题
<构建之法:现代软件工程>中第2章对效能分析进行了介绍,基于的工具是VSTS.由于我教授的学生中只有部分同学选修了C#,若采用书中例子讲解,学生可能理解起来比较困难.不过所有这些学生都学习 ...
- python中导入一个需要传参的模块
最近跑实验,遇到了一个问题:由于实验数据集比较多,每次跑完一个数据集就需要手动更改文件路径,再将文件传到服务器,再运行实验,这样的话效率很低,必须要专门看着这个实验,啥时候跑完就手动修改运行下一个实验 ...
随机推荐
- Atitti 数据库事务处理 attilax总结
Atitti 数据库事务处理 attilax总结 1.1. 为什么要传递Connection?1 1.2. 两种事务处理方式,一种是编程式事务处理;一种是声明...2 1.3. 事务隔离级别 2 1. ...
- 据说,每一个 iOSer 都想要一张 Swift 大会门票
据说,每一个 iOSer 都想要一张中国首届 Swift 开发者大会的门票: 那么,福利来了-- fir.im 作为中国首届 Swift 大会的唯一钻石赞助商,有最后 2 张价值 600 多的门票(已 ...
- 咱们来聊聊JS中的异步,以及如何异步,菜鸟版
为什么需要异步?why?来看一段代码. 问题1: for(var i=0;i<100000;i++){ } alert('hello world!!!'); 这段代码的意思是执行100...次后 ...
- C# 集合类 :(Array、 Arraylist、List、Hashtable、Dictionary、Stack、Queue)
我们用的比较多的非泛型集合类主要有 ArrayList类 和 HashTable类.我们经常用HashTable 来存储将要写入到数据库或者返回的信息,在这之间要不断的进行类型的转化,增加了系统装箱和 ...
- php分享(三十五) 文件多写注意事项
1: resource fopen ( string $filename , string $mode [, bool $use_include_path = false [,resource $co ...
- Visual C++ 6.0使用教程
Visual C++它大概可以分成三个主要的部分: 3. Platform SDK.这才是Visual C++和整个Visual Studio的精华和灵魂,虽然我们很少能直接接触到它.大致说来,Pla ...
- JavaScript垃圾回收(二)——垃圾回收算法
一.引用计数(Reference Counting)算法 Internet Explorer 8以下的DOM和BOM使用COM组件所以是引用计数来为DOM对象处理内存,引用计数的含义是跟踪记录每个值被 ...
- Spring学习总结(三)——Spring实现AOP的多种方式
AOP(Aspect Oriented Programming)面向切面编程,通过预编译方式和运行期动态代理实现程序功能的横向多模块统一控制的一种技术.AOP是OOP的补充,是Spring框架中的一个 ...
- Nutch源码阅读进程5---updatedb
看nutch的源码仿佛就是一场谍战片,而构成这精彩绝伦的谍战剧情的就是nutch的每一个从inject->generate->fetch->parse->update的环节,首 ...
- 电路相关知识--读<<继电器是如何成为CPU的>>
电路相关知识–读<<继电器是如何成为CPU的>> */--> *///--> *///--> 电路相关知识–读<<继电器是如何成为CPU的> ...