现在的位置: 首页 > 综合 > 正文

Python – optparse 之 OptionParser

2014年11月11日 ⁄ 综合 ⁄ 共 3370字 ⁄ 字号 评论关闭

 

optparse是专门用来在命令行添加选项的一个模块。

首先来看一段示例代码

from optparse import OptionParser

MSG_USAGE = "myprog[ -f <filename>][-s <xyz>] arg1[,arg2..]"

optParser = OptionParser(MSG_USAGE)

optParser.add_option("-f","--file",action = "store",type="string",dest = "fileName")

ooptParser.add_option("-v","--vison", action="store_false", dest="verbose",default='gggggg',

                     help="make lots of noise [default]")

fakeArgs = ['-f','file.txt','-v','good luck to you', 'arg2', 'arge']

options, args = optParser.parse_args(fakeArgs)

print options.fileName

print options.verbose

print options

print args

print optParser.print_help()

 

输入结果为

file.txt

False

{'verbose': False, 'fileName': 'file.txt'}

['good luck to you', 'arg2', 'arge']

Usage: myprog[ -f <filename>][-s <xyz>] arg1[,arg2..]

Options:

  -h, --help            show this help message and exit

  -f FILENAME, --file=FILENAME

  -v, --vison           make lots of noise [default]



基本使用步骤

1、 构造一个OptionParser的对象optParse,传入的值MSG_USAGE可被调用打印命令时显示出来。

MSG_USAGE = "myprog[ -f <filename>][-s <xyz>] arg1[,arg2..]"

optParser = OptionParser(MSG_USAGE)

2、 调用OptionParser.add_option()添加选项

optParser.add_option("-f","--file",action = "store",type = "string",dest = "fileName")

optParser.add_option("-v","--vison", action="store_false", dest="verbose",default='gggggg',

                     help="make lots of noise [default]")

add_option()参数说明:

   action:存储方式,分为三种storestore_falsestore_true

   type:类型

   dest:存储的变量

   default:默认值

   help:帮助信息

3、 调用OptionParser.parse_args()剖析并返回一个directory和一个list

fakeArgs = ['-f','file.txt','-v','good luck to you', 'arg2', 'arge']

options, args = optParser.parse_args(fakeArgs)

print options.fileName

print options.verbose

print options

print args

输出结果

file.txt

False

{'verbose': False, 'fileName': 'file.txt'}

['good luck to you', 'arg2', 'arge']

parse_args()说明:

   如果没有传入参加,parse_args会默认将sys.argv[1:]的值作为默认参数。这里我们将  fakeArgs模拟输入的值。

从返回结果中可以看到,

    options为是一个directory,它的内容fakeArgs为“参数/值 ”的键值对。

    args 是一个list,它的内容是fakeargs除去options后,剩余的输入内容。

    options.versionoptions.fileName都取到与options中的directory的值。

4、 调用OptionParser.optParser.print_help()输出帮助信息

optParser.print_help()

   显示返回结果

Usage: myprog[ -f <filename>][-s <xyz>] arg1[,arg2..]

Options:

  -h, --help            show this help message and exit

  -f FILENAME, --file=FILENAME

  -v, --vison           make lots of noise [default]

optParser.print_help()说明:

1、最开始的的MSG_USAGE的值:在这个地方显示出来了。

2、自动添加了-h这个参数。

3、当 optparse 解析到 -h 或者 –help 命令行参数时,会调用 parser.print_help() 打印程序的帮助信息, 打印出帮助信息后,optparse 将会退出,不再解析其它的命令行参数。

 

     注:在MSG_USAGE中如果使用%prog,会被自动解析为sys.args[0] 也就是文件名。如将,MSG_USAGE = "%prog [options] arg1 arg2",假如文件名为  filexx,那么出现在help中的

信息就是" filexx[options] arg1 arg2"

 

add_option()中参数的意义:

short option string: 为第一个参数,表示option的缩写,例如-f;

long option string: 为第二个参数,表示option的全拼,例如--file;

后面的参数皆为命名参数,命名参数为可选参数;

action=: 表示对此option的处理方式,默认值为store,表示存储option的值到解析后的options对象的成员中。action还可以有其他的值:对于bool值,使用store_true来默认存储true,使用store_false来默认存储false,store_const用来存储const设置的值到此option,append表示增加option的参数到list中,此时此option是一个list,可能包含多个值,count表示对counter增加一,callback表示调用指定的函数。所有的action值如下:

store + store_true + store_false + store_const + append + count + callback

type=:表示此option的值的类型,默认为string,可以指定为string,int,choice,
float andcomplex

dest=:表示此option在经过optionparser解析后的options对象中成员的名字,默认使用long option string;

default=:表示比option的默认值;

metavar=:表示显示到help中option的默认值(显示到help的时候并不是default);

const=:当action为store_const的时候,需要设置此值;

choices=:当设置type为choices时,需要设置此值;

 

抱歉!评论已关闭.