python optparse模块使用实例

系统 1341 0

使用命令行时,如果要添加选项的话,python 2.3里新增加了一个模块叫optparse,也是专门来处理命令行选项的。

复制代码 代码如下:

from optparse import OptionParser
parser = OptionParser()
parser.add_option("-p", "--pdbk", action="store_true",
                  dest="pdcl",
                  default=False,
                  help="write pdbk data to oracle db")
parser.add_option("-z", "--zdbk", action="store_true",
                  dest="zdcl",
                  default=False,
                  help="write zdbk data to oracle db")

(options, args) = parser.parse_args()

if options.pdcl==True:
    print 'pdcl is true'
if options.zdcl==True:
    print 'zdcl is true'


add_option用来加入选项,action是有store,store_true,store_false等,dest是存储的变量,default是缺省值,help是帮助提示

最后通过parse_args()函数的解析,获得选项,如options.pdcl的值。
基本使用流程:

》1. �a生一�� optparse.OptionParser 的物件。可以在�a生�r��"程式的命令列�f明" (usage) 做����,交�o OptionParser 的建��子:

复制代码 代码如下:

from optparse import OptionParser
    MSG_USAGE = "myprog[ -f ][ -s ] arg1[, arg2...]"
    optParser = OptionParser(MSG_USAGE)

》2. 呼叫 OptionParser.add_option() 加入接受的 option:
复制代码 代码如下:

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

��� action 有�S多�N�,�A�O是 "store",所以即使省略也�o妨,其它的 action �N�在下面���^�m�f明。

若有一��以上的 option,重覆上述的方式加入(注意:以下省略了 action ���):

复制代码 代码如下:

optParser.add_option("-s",
                         "--someopt",
                         type = "string",
                         dest = "someopt")

》3. 呼叫 OptionParser.parse_args() �M行解�x。如果�]有�魅���, OptionParser �A�O��以 sys.argv[1:] ��ο筮M行解�x。OptionParser.parse_args() ���骰匾�� tuple,由 optparse.Values 和 一�� list 所�M成。下例�魅胍��假造的��盗�:
复制代码 代码如下:

fakeArgs = ['-f', 'thefile.txt', '-s', 'xyz', 'arg1', 'arg2', 'arge']
   
    options, args = optParser.parse_args(fakeArgs)
   
    print options.fileName
    print options.someopt
    print args

最後��得到的�出�Y果:
复制代码 代码如下:

thefile.txt
    xyz
    ['arg1', 'arg2', 'arge']

�@是一����蔚墓�例,�f明了 OptionParser 的一般使用方式。透�^�@��例子,可以看到如果�槌淌郊尤� option, �K且在程式中取得 option argument 和 positional argument。OptionParser.parse_args() �有�S多用法,下面���f明一部份。

�槌淌郊尤� flag option:

�S多的 Unix 命令�碛� "-v", "-q" 的 option,代表"提供���息"或是"不�@示�息"。要做到�@一�c,只要在程式中加入下列的 option :

复制代码 代码如下:

parser.add_option("-v", action="store_true", dest="verbose")
    parser.add_option("-q", action="store_false", dest="verbose")
    opts, args = parser.parse_args()

第一�� add_option() 加入了一�� "-v" 的 option;如果命令列��抵谐霈F了 "-v",�t opts.verbose ���是 True;相反的,第二�� add_option() 加入了一�� "-q" option;如果命令列��抵谐霈F了 "-q",�t opts.verbose ���是 False,�@�烧�K不相悖,程式可以�O�成:��收到 "-v" �r,�@示���息;��收到 "-q" �r,�@示概略�息,或完全不�@示;���烧叨�]有收到,�t�@示一般的�息。

�O定 option 的�A�O值:

上述的例子都假�O命令例��收到�A期中的 option,那�N如果�]有 option �r,接收到的 option 值��是什�N呢?答案是 None!如果想�� option 提供�A�O值,只要在 OptionParser.parse_args()中指定��� default 就行了:

复制代码 代码如下:

parser.add_option("-v", action="store_true", dest="verbose", default = True)
    parser.add_option("-q", action="store_false", dest="verbose")
    opts, args = parser.parse_args()

上述的程式�a�槌淌郊尤肓��� option,�� "-v" �]有出�F�r, opts.verbose �A�O值�� True;�� "-q" 被指定�r, opts.verbose 被�O定�� False,和上一��例子有�c不同。再看下一��例子:
复制代码 代码如下:

parser.add_option("-v", action="store_true", dest="verbose", default=False)
parser.add_option("-q", action="store_false", dest="verbose", default=True)

opts.verbose 的�A�O值��是什�N?答案是 True,最後一��指定到同一��目�说� option �A�O值��被�裼谩�

一般的 option 亦可加入�A�O值:

复制代码 代码如下:

parser.add_option("-f", action="store", dest="fileName", default = "defaultConfig.txt")

�槌淌郊尤胝f明:

��实� Unix 命令大多有著 "-h", "--help" 的 option,���⑹褂谜f明印出�怼T� OptionParser.parse_args() 中指定 "help" ���,�K指定�f明的字串,就可以�檫@�� option 加入�f明了:

复制代码 代码如下:

parser.add_option("-v",
                      action="store_true",
                      dest="verbose",
                      default=False,
                      help="make lots of noise [default]")

��程式收到 "-h" 或 "--help",交�o OptionParser 解�x�r,��自�佑〕稣f明�热�,而忽略其它的 argument:
复制代码 代码如下:

usage: [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)
      -fFILE, --file=FILE  write output to FILE
      -mMODE, --mode=MODE  interaction mode: one of 'novice', 'intermediate'
                           [default], 'expert'

��得一�_始提到交�o OptionParser 建��子的��� MSG_USAGE ��? optparse 套件�� usage �息也提供了一些支援。在 usage 中使用 "%prog" �P�I字, OptionParser ��自��⑵浯��Q�槌淌矫�,即 sys.args[0]:
复制代码 代码如下:

usage = "usage: %prog [options] arg1 arg2"

如果程式名�� "myprog",�t出�F在 help �息中的 usage 就��是:
复制代码 代码如下:

usage = "usage: myprog [options] arg1 arg2"

如果OptionParser 建��子�]有收到任何���,�t��自�赢a生一�� usage �息:
复制代码 代码如下:

"usage: %prog [options]"

前提是程式�]有 positional argument。甭��心 option 在 help �息中排列的方式, OptionParser ��搞定一切,如同前面程式所示。


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论