python包_1_命令行解析— argparser包

第一部分:

sys.argv[ ]

也有个类似的功能:

========================================================================================

sys.argv [ ]

可以将sys.argv[]看作为一个列表,来解析终端命令输入的外部参数,

sys.argv[0]  -----------> 指向当前python文件的文件名

sys.argv[1] ------------> 指向文件名之后的第一个参数

sys.argv[2] ------------> 指向文件名之后的第二个参数

..... 以此类推

=======================================================================================

例如:有一个python文件 mytest.py 内容如下:

import sys
print "filename =", sys.argv[0]
for i in range(1, len(sys.argv)):
    print "para%s=%s"%(i,sys.argv[i])

在终端运行后,会输出 文件名

$ python mytest.py name age sex
filename =mytest.py
para1=name
para2=age
para3=sex

第二部分:

ArgumentParser

import argparse             首先导入该模块

parser = argparse.ArgumentParser()  然后创建一个解析对象

parser.add_argument('echo')      然后向该对象中添加你要关注的命令行参数和选项,每一个add_argument方法对应一个你要关注的参数或选项

args = parser.parse_args()      最后调用parse_args()方法进行解析,解析成功之后即可使用

print args.echo

AugumentParser类的参数

class ArgumentParser(prog=None, usage=None, description=None, epilog=None, parents=[], formatter_class=argparse.HelpFormatter, prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True)

一般创建接收器的时候省略AugumentParser的参数,这里简单介绍一些参数:

prefix_chars 是参数的前缀,默认为‘_’

fromfile_prefix_chars 前缀字符,

description: 描述程序


添加参数选项 - add_argument

ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
name or flags  :参数有两种,可选参数和位置参数。parse_args()运行时,默认会用’-‘来认证可选参数,剩下的即为位置参数。

定位参数:

parser.add_argument("echo",help="echo the string")

可选参数:

parser.add_argument("--verbosity", help="increase output verbosity")

在执行程序的时候,定位参数必选(必须被赋值),可选参数可选(可以不用赋值)。

dest:如果提供dest,例如dest="a",那么可以通过args.a访问该参数

default:设置参数的默认值

action:参数出发的动作

store:保存参数,默认

store_const:保存一个被定义为参数规格一部分的值(常量),而不是一个来自参数解析而来的值。

store_ture/store_false:保存相应的布尔值

append:将值保存在一个列表中。

append_const:将一个定义在参数规格中的值(常量)保存在一个列表中。

count:参数出现的次数

parser.add_argument("-v", "--verbosity", action="count", default=0, help="increase output verbosity")

version:打印程序版本信息

type:把从命令行输入的结果转成设置的类型

        parser.add_argument("-v", "--verbosity", action="count", type=int, help="increase output verbosity")

choice:允许的参数值

parser.add_argument("-v", "--verbosity", type=int, choices=[0, 1, 2], help="increase output verbosity")

help:参数命令的介绍

例子1:

import argparse             
parser = argparse.ArgumentParser() 
parser.add_argument('echo')      
args = parser.parse_args() 
print args.echo

在终端必须 给echo这个定位参数赋值,不赋值则报错(即使不使用该参数也报错)。

$ python mytest.py 123
123
$ python mytest.py
报错
而可选参数的话
$ python mytest.py 
1
$ python mytest.py -echo name
1
$ python mytest.py name
报错  必须加上-echo
$ python mytest.py -echo name -sing age -dance sex
age

多个可选参数的话

import argparse             
parser = argparse.ArgumentParser() 
parser.add_argument('name',            type=str,     help='your name')
parser.add_argument('-age',            type=int,     help='your age',      dest='age')
parser.add_argument('-sex',            type=str,     help='your sex',     dest='sex',  choice=['man','woman'])
parser.add_argument('-c','-country',   type=str,     help='your country', dest='country')      
args = parser.parse_args() 
print 'my name is ', args.name
info = args.__dict__
for key,value in info.iteritems():
    print '%s==%s'%(key,value)





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值