亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

python optparse模塊使用實(shí)例

系統(tǒng) 1521 0

使用命令行時(shí),如果要添加選項(xiàng)的話,python 2.3里新增加了一個(gè)模塊叫optparse,也是專門來(lái)處理命令行選項(xiàng)的。

復(fù)制代碼 代碼如下:

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用來(lái)加入選項(xiàng),action是有store,store_true,store_false等,dest是存儲(chǔ)的變量,default是缺省值,help是幫助提示

最后通過(guò)parse_args()函數(shù)的解析,獲得選項(xiàng),如options.pdcl的值。
基本使用流程:

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

復(fù)制代碼 代碼如下:

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

》2. 呼叫 OptionParser.add_option() 加入接受的 option:
復(fù)制代碼 代碼如下:

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

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

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

復(fù)制代碼 代碼如下:

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

》3. 呼叫 OptionParser.parse_args() ?M行解?x。如果?]有?魅???, OptionParser ?A?O??以 sys.argv[1:] ??ο筮M(jìn)行解?x。OptionParser.parse_args() ???骰匾?? tuple,由 optparse.Values 和 一?? list 所?M成。下例?魅胍??假造的??盜?:
復(fù)制代碼 代碼如下:

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

最後??得到的?出?Y果:
復(fù)制代碼 代碼如下:

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 :

復(fù)制代碼 代碼如下:

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(xiàn)了 "-v",?t opts.verbose ???是 True;相反的,第二?? add_option() 加入了一?? "-q" option;如果命令列??抵諧霈F(xiàn)了 "-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 就行了:

復(fù)制代碼 代碼如下:

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不同。再看下一??例子:
復(fù)制代碼 代碼如下:

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,最後一??指定到同一??目?說(shuō)? option ?A?O值??被?裼謾?

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

復(fù)制代碼 代碼如下:

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

?槌淌郊尤胝f(shuō)明:

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

復(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:
復(fù)制代碼 代碼如下:

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]:
復(fù)制代碼 代碼如下:

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

如果程式名?? "myprog",?t出?F在 help ?息中的 usage 就??是:
復(fù)制代碼 代碼如下:

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

如果OptionParser 建??子?]有收到任何???,?t??自?贏a生一?? usage ?息:
復(fù)制代碼 代碼如下:

"usage: %prog [options]"

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


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 四虎影院.com | 五月色综合 | 成人午夜大片免费视频77777 | 亚洲一区二区三区精品影院 | 99久久国产综合精品五月天 | 久久毛片久久毛 | 在线亚洲欧美日韩 | 99高清免费国产自产拍 | 五月婷婷激情在线 | 久久天堂视频 | 免费久草 | 99久久999久久久综合精品涩 | 欧美一级美片在线观看免费 | 亚洲毛片在线免费观看 | 日本高清中文字幕视频在线 | 亚洲成人在线视频播放 | 精品亚洲一区二区三区在线播放 | 久久精品av77777 | 深夜在线看片 | 久久精品国产国产 | 国产美女亚洲精品久久久久久 | 99精品国产高清自在线看超 | 午夜成年人网站 | 五月花精品视频在线观看 | 男女性高爱麻豆 | 成人亚欧网站在线观看 | 22222se男人的天堂 | 热久久这里是精品6免费观看 | 五月天激情视频 | 九九国产精品九九 | 久久日本精品99久久久 | 伊人色婷婷综在合线亚洲 | 久久天天躁狠狠躁夜夜中文字幕 | 日韩中文字幕网站 | 中文字幕高清免费不卡视频 | 欧美激情免费 | 日韩毛片在线 | 成人在线欧美 | 女性成人毛片a级 | 亚洲精品色综合久久久 | 中文乱码字幕午夜无线观看 |