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中导入一个需要传参的模块
最近跑实验,遇到了一个问题:由于实验数据集比较多,每次跑完一个数据集就需要手动更改文件路径,再将文件传到服务器,再运行实验,这样的话效率很低,必须要专门看着这个实验,啥时候跑完就手动修改运行下一个实验 ...
随机推荐
- js 优化
一.for循环的优化 <!doctype html> <html lang="en"> <head> <meta charset=&quo ...
- vue-cli需要的包
vue-cli需要的包 npm install webpack webpack-dev-server --save-dev npm install vue-loader vue-html-loader ...
- WebService如何根据对方提供的xml生成对象
最近写接口接到一个需求,就是他们推送数据过来,我们这边来提供服务接口. 对方用的是.NET WebService,已经把所有的对象格式定义好了,可能是为了顾及各个平台的通用性,所以只在文档中提供了xm ...
- KnockoutJS 3.X API 第四章 数据绑定(2) 控制流foreach绑定
foreach绑定 foreach绑定主要用于循环展示监控数组属性中的每一个元素,一般用于table标签中 假设你有一个监控属性数组,每当您添加,删除或重新排序数组项时,绑定将有效地更新UI的DOM- ...
- Introduction of Open CASCADE Foundation Classes
Open CASCADE Foundation Classes Open CASCADE基础类 eryar@163.com 一.简介 1. 基础类概述 Foundation Classes Overv ...
- OpenCascade Application Framework Introduction
OpenCascade Application Framework Introduction eryar@163.com 本教程介绍了Open CASCADE程序框架(Application Fram ...
- c#文本控件实现换行
要让一个Windows Form的C# TextBox换行显示多行文本就得把它的Multiline属性设置为true. 这个大家都知道,可是当你要在代码中为Text属性设置多行文本的时候可能会遇到点麻 ...
- FlashFXP(强大的FXP/ftp上传工具)V5.0.0.3722简体中文特别版
flashfxp是功能强大的fxp/ftp软件,融合了一些其他优秀ftp软件的优点,如像cuteftp一样可以比较文件夹, FlashFXP是一款功能强大的FXP/ftp上传工具, FlashFXP集 ...
- Android抓包方法(二)之Tcpdump命令+Wireshark
Android抓包方法(二) 之Tcpdump命令+Wireshark 前言 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等.学会抓包分 ...
- idea快捷键总结
使用好快捷键会快很多,这里我慢慢添加我用习惯的快捷键.参考 1.alt+enter 这个几乎万能,有错误提示的时候将光标移动到错误处,然后alt+enter,会给出建议方案:写完一个表达式后,alt+ ...