Python 有兩個內建的模塊用於處理命令行參數:html
一個是 getopt,getopt只能簡單處理 命令行參數。python
另外一個是 optparse,是一個可以讓程式設計人員輕鬆設計出簡單明瞭、易於使用、符合標準的Unix命令列程式的Python模塊。生成使用和幫助信息。sql
下面是一個簡單的示例腳本optparse_exampl_1.py:vim
[root@localhost python]# vim optparse_exampl_1.pyapp
#!/usr/bin/env python
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()
|
如今你能夠在命令行進行以下輸入:ui
<yourscript> --file=outfile -q
<yourscript> -f outfile --quiet
<yourscript> --quiet --file outfile
<yourscript> -q -foutfile
<yourscript> -qfoutfile
|
上面這些命令是相同效果的。除此以外, optparse 還爲咱們自動生成命令行的幫助信息:this
<yourscript>
-
h
<yourscript>
-
-
help
|
optparse將打印腳本的選項和幫助信息:spa
[root@localhost python]
# ./optparse_exampl_1.py -h
Usage: optparse_exampl_1.py [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
|
from
optparse import OptionParser
[...]
parser
=
OptionParser()
|
如今能夠定義命令行選項,基本語法是:命令行
parser.add_option(opt_str, ...,
attr
=
value, ...)
|
每種選項各有一個或多個選項的字符串,好比 -f 或 --file,一般每一個選項將有一個短選項和一個長選項。例如:debug
parser.add_option(
"-f"
,
"--file"
, ...)
|
(options, args)
=
parser.parse_args()
|
parser.add_option(
"-f"
,
"--file"
,
action
=
"store"
,
type
=
"string"
, dest
=
"filename"
)
args
=
[ "-f" , "foo.txt" ]
(options, args)
=
parser.parse_args(args)
print
options.filename
|
parser.add_option(
"-n"
,
type
=
"int"
, dest
=
"num"
)
|
注意:這個選項沒有長選項,長選項也是可選的,若是沒有指定dest選項,將用命令行的參數名對options對象的值進行存取。store也有其餘的兩種形式: stort_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(
"-v"
, action
=
"store_true"
, dest
=
"verbose"
)
parser.add_option(
"-q"
, action
=
"store_false"
, dest
=
"verbose"
, default
=
True
)
|
又或者使用set_defaults例如:
parser.set_defaults(verbose
=
True
)
parser.add_option(...)
(options, args)
=
parser.parse_args()
|
usage
=
"usage: %prog [options] arg1 arg2"
parser
=
OptionParser(usage = usage)
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)"
)
parser.add_option(
"-f"
,
"--filename"
,
metavar
=
"FILE"
,
help
=
"write output to FILE"
)
parser.add_option(
"-m"
,
"--mode"
,
default
=
"intermediate"
,
help
=
"interaction mode: novice, intermediate, "
"or expert [default: %default]"
)
|
當 optparse 解析到 -h 或者 –help 命令行參數時,會調用 parser.print_help() 打印程序的幫助信息:
Usage: <yourscript> [options] arg1 arg2
Options:
-
h,
-
-
help
show this help message and exit
-
v,
-
-
verbose make lots of noise [default]
-
q,
-
-
quiet be vewwy quiet (I'm hunting wabbits)
-
f
FILE
,
-
-
filename
=
FILE
write output to
FILE
-
m MODE,
-
-
mode
=
MODE interaction mode: novice, intermediate,
or
expert [default: intermediate]
|
usage
=
"usage: %prog [options] arg1 arg2"
|
-
m MODE,
-
-
mode
=
MODE
|
group
=
OptionGroup(parser, "Dangerous Options" ,
"Caution: use these options at your own risk. "
"It is believed that some of them bite."
)
group.add_option(
"-g"
, action
=
"store_true"
,
help
=
"Group option."
)
parser.add_option_group(group)
|
輸出以下:
Usage: <yourscript> [options] arg1 arg2
Options:
-
h,
-
-
help
show this help message and exit
-
v,
-
-
verbose make lots of noise [default]
-
q,
-
-
quiet be vewwy quiet (I'm hunting wabbits)
-
f
FILE
,
-
-
filename
=
FILE
write output to
FILE
-
m MODE,
-
-
mode
=
MODE interaction mode: novice, intermediate,
or
expert [default: intermediate]
Dangerous Options:
Caution: use these options at your own risk. It
is
believed that some
of them bite.
-
g Group option.
|
完整的列子:
group
=
OptionGroup(parser, "Dangerous Options" ,
"Caution: use these options at your own risk. "
"It is believed that some of them bite."
)
group.add_option(
"-g"
, action
=
"store_true"
,
help
=
"Group option."
)
parser.add_option_group(group)
group
=
OptionGroup(parser, "Debug Options" )
group.add_option(
"-d"
,
"--debug"
, action
=
"store_true"
,
help
=
"Print debug information"
)
group.add_option(
"-s"
,
"--sql"
, action
=
"store_true"
,
help
=
"Print all SQL statements executed"
)
group.add_option(
"-e"
, action
=
"store_true"
,
help
=
"Print every action done"
)
parser.add_option_group(group)
|