python处理命令行参数

  • 格式:pdf
  • 大小:219.46 KB
  • 文档页数:7

下载文档原格式

  / 7
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Python 有两个内建的模块用于处理命令行参数,一个是getopt,《Deep in python》一书中也有提到,只能简单处理命令行参数;另一个是optparse,它功能强大,而且易于使用,可以方便地生成标准的、符合

Unix/Posix 规范的命令行说明。

示例

下面是一个使用optparse 的简单示例:

from optparse import OptionParser

[...]

parser = OptionParser()

parser.add_option("-f", "--file", dest="filename",

help="write report to FILE", metavar="FILE")

parser.add_option("-q", "--quiet",

action="store_false", dest="verbose", default=True,

help="don't print status messages to stdout")

(options, args) = parser.parse_args()

现在,?就可以在命令行下输入:

--file=outfile -q

-f outfile --quiet

--quiet --file outfile

-q -foutfile

-qfoutfile

上面这些命令是相同效果的。除此之外,optparse 还为我们自动生成命令行的帮助信息:

-h

--help

输出:

usage: [options]

options:

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

-f FILE, --file=FILE write report to FILE

-q, --quiet don't print status messages to stdout

简单流程

首先,必须import OptionParser 类,创建一个OptionParser 对象:

from optparse import OptionParser

[...]

parser = OptionParser()

然后,使用add_option 来定义命令行参数:

parser.add_option(opt_str, ...,

attr=value, ...)

每个命令行参数就是由参数名字符串和参数属性组成的。如-f 或者?file 分别是长短参数名:

parser.add_option("-f", "--file", ...)

最后,一旦你已经定义好了所有的命令行参数,调用parse_args() 来解析程序的命令行:

(options, args) = parser.parse_args()

注:你也可以传递一个命令行参数列表到parse_args();否则,默认使用sys.argv[:1]。

parse_args() 返回的两个值:

* options,它是一个对象(optpars.Values),保存有命令行参数值。只要知道命令行参数名,如file,就可以访问其对应的值:options.file 。

* args,它是一个由positional arguments 组成的列表。

Actions

action 是parse_args() 方法的参数之一,它指示optparse 当解析到一个命令行参数时该如何处理。actions 有一组固定的值可供选择,默认是’store‘,表示将命令行参数值保存在options 对象里。

示例

parser.add_option("-f", "--file",

action="store", type="string", dest="filename")

args = ["-f", "foo.txt"]

(options, args) = parser.parse_args(args)

print options.filename

最后将会打印出“foo.txt”。

当optparse 解析到’-f’,会继续解析后面的’foo.txt’,然后将’foo.txt’保存到options.filename 里。当调用parser.args() 后,options.filename 的值就为’foo.txt’。

你也可以指定add_option() 方法中type 参数为其它值,如int 或者float 等等:

parser.add_option("-n", type="int", dest="num")

默认地,type 为’string’。也正如上面所示,长参数名也是可选的。其实,dest 参数也是可选的。如果没有指定dest 参数,将用命令行的参数名来对options 对象的值进行存取。

store 也有其它的两种形式:store_true 和store_false,用于处理带命令行参数后面不带值的情况。如-v,-q 等命令行参数:

parser.add_option("-v", action="store_true", dest="verbose")

parser.add_option("-q", action="store_false", dest="verbose")

这样的话,当解析到‘-v’,options.verbose 将被赋予True 值,反之,解析到‘-q’,会被赋予False 值。

其它的actions 值还有:

store_const、append、count、callback。

默认值

parse_args() 方法提供了一个default 参数用于设置默认值。如:

parser.add_option("-f","--file", action="store", dest="filename", default="foo.txt") parser.add_option("-v", action="store_true", dest="verbose", default=True)

又或者使用set_defaults():

parser.set_defaults(filename="foo.txt",verbose=True)

parser.add_option(...)

(options, args) = parser.parse_args()

生成程序帮助

optparse 另一个方便的功能是自动生成程序的帮助信息。你只需要为

add_option() 方法的help 参数指定帮助信息文本: