May 14, 2009

Python option parser

import sys
import sys
import os
from optparse import OptionParser


usage = "usage: %prog [options] arg1 arg2"
parser = OptionParser(usage=usage)
parser.add_option("-m", "--mode",
                  type="int", default=1, help="Mode Selection"),
parser.add_option("-n", "--name",
                  #type="string", #default string type
                  help="Name"),

parser.add_option("-v", "--verbose",
                  action="store_true", dest="verbose", default=True,
                  help="make lots of noise [default]")
parser.add_option("-q", "--quiet",
                  action="store_false", dest="verbose",
                  help="be vewwy quiet (I'm hunting wabbits)")

(options, args) = parser.parse_args()

print "Require Arguments:"
for i in range(len(args)):
    print args[i]

print "Optional Arguments:"
print "mode: %i"%options.mode
print "name: %s"%options.name
print "verbose: %s"%options.verbose
命令行参数解释

1. 合理的调用格式为
script.py [-flag1 value1] [-flag2] [arg1] [arg2]
注1:
-flag1 value1 为 option
-flag2 为不带值的 option
arg1 为不能少的参数

注2:-flag1 value1 的具体情况
-m 1
-m1
--mode 1
--mode=1
 都可以

2. add_option
1)
action 默认为 store 即把解释得到的参数值存入变量
其他选项为
store_true 针对bool变量,存为 ture
store_false

store_true/false 的作用是(e.g.,)
只需用
-v
就可以存成 true, 而不用
-v true
注意 -v -q 变量为同一个
2)
dest 变量名
默认为长的flag, 比如
add_option("-m", "--mode",...)
默认为 options.mode
若没有长的 flag,默认为短的,比如
add_option("-m",...)
默认为 options.m
3)
type 类型
默认为 string

3.
(options, args) = parser.parse_args()
args 为强制的参数,即不带 flag 的参数


以上的程序的结果

E:\python\examples>python option_parse.py -m 3 -n Kevin -q input.txt output.txt
Require Arguments:
input.txt
output.txt
Optional Arguments:
mode: 3
name: Kevin
verbose: False

0 comments: