欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python中optparse模塊使用淺析

系統 1634 0

最近遇到一個問題,是指定參數來運行某個特定的進程,這很類似Linux中一些命令的參數了,比如ls -a,為什么加上-a選項會響應。optparse模塊實現的也是類似的功能,它是為腳本傳遞命令參數。

使用此模塊前,首先需要導入模塊中的類OptionParser,然后創建它的一個實例(對象):

復制代碼 代碼如下:

from optparse import OptionParser
parser = OptionParser()? #這里也可以定義類的參數,后續有

接著就可以添加選項了,基本語法:

復制代碼 代碼如下:

parser.add_option(opt_str, ...,??
????????????????? attr=value, ...)

  ? 每個opt_str可以有多個選項字符串,比如-f 和--file(就行Linux命令行中ls -a和ls --all效果一樣),只要定義了這些選項,則在命令行輸入的時候這些選項就會被識別,否則報錯。opt_str的定義可以如下:
復制代碼 代碼如下:

parser.add_option("-f", "--file", ...)? #-f 和 --file 是作為調用時的參數的標簽,會被識別

當選項被定義好后,則可以調用parse_args()函數來獲取我們定義的選項和參數
復制代碼 代碼如下:

(options, args) = parser.parse_args() #parse_args可以有參數,不定義的話使用默認的sys.argv[1:]

parse_args()返回兩個值,一個是選項options(如:-f),另一個是參數args,即除選項options以外的值(如:test.txt)

add_option中最重要的四個option的屬性是:action,type,dest(destination),help。這四個中action又是最基礎的。

action參數(附帶介紹了type、dest):

action參數告訴optparse該做什么當它在命令行中遇到選項時。action有三種存儲方式:store、store_false、store_true。如果不指定action的值,默認的是store,它告訴optparse將繼續讀取下一個參數(type),保證類型的正確性,并將它將值存儲在一個變量(dest)中,即將命令行中輸入的字符串將它存為options的屬性,這樣可以直接調用。??嗦了一大堆,我自己都被搞暈了~~~~,先看個例子吧!

復制代碼 代碼如下:

>>> parser.add_option("-f", "--file",action="store", type="string", dest="filename")

>>> args = ["-f", "foo.txt"] #這個是模擬命令行的輸入
>>> (options, args) = parser.parse_args(args)
>>> options.filename
'foo.txt'

上述:當optparse看到選項-f時,它將繼續讀下一個參數是foo.txt,并將它存儲在options.filename(這個filename就是add_option中的dest),之后dest的值將作為parser的屬性被存儲。所以,當調用parse_args函數時,options.filename的值就是foo.txt。這個是以“string”類型存儲的,當然type也可以是int和float等,比如下面的:

復制代碼 代碼如下:

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

注意,這個沒有指定一個長字符串的選項(如:--number),這當然是可以的,不過命令行輸入時選項就只能是-n了,也沒有指定action,使用默認的“store”。再次使用模擬的命令行參數["-n22"](一個參數),也可以寫成["-n? 22"](作為兩個參數來傳遞):
復制代碼 代碼如下:

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

>>> (options, args) = parser.parse_args(["-n22"])
>>> print options .num
22

如果不指定type參數,默認的是string類型,所以一個最簡單的方式可以寫成這樣:

復制代碼 代碼如下:

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

action另兩種值分別是:“store_true”和“store_false”,這一般作為一個標記使用,例如開始運行一個程序時將flag設為True,退出時將flag設為False。看了下面的例子就全明白了:當選項遇到v時,它將options.verbose設為True,當選項遇到q時,它將options.verbose設為False:

復制代碼 代碼如下:

>>> from optparse import OptionParser
>>> parser=OptionParser()
>>> parser.add_option("-v", action="store_true", dest="verbose")

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

>>> fakeArgs = ['-v','hello']
>>> options, args = parser.parse_args(fakeArgs)
>>> options.verbose
True
>>> fakeArgs = ['-q','bye bye']
>>> options, args = parser.parse_args(fakeArgs)
>>> options.verbose
False
#如果同時寫兩個選項v和q,它會以哪個為準呢,我試了一下,是以最后出現的為準,呵呵~~
>>> fakeArgs = ['-q','bye bye','-v','hello']
>>> options, args = parser.parse_args(fakeArgs)
>>> options .verbose
True

Default參數:

default參數很好理解了,即當沒有指定dest的值時,給出個默認值,如下:

復制代碼 代碼如下:

>>> parser.add_option("-x", action="store", dest="verbose", default="hahaha")

>>> options, args = parser.parse_args() #這里沒有傳參數
>>> options.verbose
'hahaha'

如果這樣的話,那下面這兩句的效果就一樣了(前提是不給parse_args()函數傳參:) 
復制代碼 代碼如下:

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

help參數:

這個參數是為了讓我們定義的“命令”更為逼真,還提供了幫助消息了呢!呵呵~~簡單用法如下:

復制代碼 代碼如下:

>>> from optparse import OptionParser
>>> usage = "myprog[ -f ][-s ] arg1[,arg2..]"
>>> parser=OptionParser(usage) #這里為類添加了參數usage
>>> optParser.add_option("-f","--file",action = "store",type="string",dest = "fileName",help="no any help")

>>> fakeArgs = ['-f','file.txt']
>>> options, args = parser.parse_args(fakeArgs)
>>> options.fileName
'file.txt'
>>> parser.print_help()
Usage: myprog[ -f ][-s ] arg1[,arg2..]

Options:
? -h, --help??????????? show this help message and exit? #此兩行根據option自動生成,比較智能額~~
? -f FILENAME, --file=FILENAME
??????????????????????? no any help? #這是我定義的幫助信息(呵呵,不太友好~~)
>>> parser.print_usage()
Usage: myprog[ -f ][-s ] arg1[,arg2..]? #這是類的usage信息~~很逼真,有木有?

>>>


上述是介紹基本的語法,下面舉兩個例子,一個是網上找的一個模擬命令行的參數的例子,另一個是“真實”的例子~~~

Example1:

復制代碼 代碼如下:

from optparse import OptionParser
usage = "myprog[ -f ][-s ] arg1[,arg2..]"
optParser = OptionParser(usage)
optParser.add_option("-f","--file",action = "store",type="string",dest = "fileName")
ooptParser.add_option("-v","--vison", action="store_false", dest="verbose",default='None',
???????????????????? help="make lots of noise [default]")
fakeArgs = ['-f','file.txt','-v','good luck to you', 'arg2', 'arge']?
options, args = optParser.parse_args(fakeArgs)
print options.fileName
print options.verbose
print options
print args
print optParser.print_help()

運行結果是:

復制代碼 代碼如下:

file.txt
False
{'verbose': False, 'fileName': 'file.txt'}
['this is some what', 'arg2', 'arge']
Usage: myprog[ -f ][-s ] arg1[,arg2..]
Options:
? -h, --help??????????? show this help message and exit
? -f FILENAME, --file=FILENAME
? -v, --vison?????????? make lots of noise [default]

Example2:

一個簡單的例子,就是將給腳本傳選項n時,則輸出的是n的參數的值,否則給出默認值(腳本保存在E盤):

復制代碼 代碼如下:

from optparse import OptionParser
optParser = OptionParser()
optParser.add_option("-n","--number",action = "store",type="int",dest = "intNumber")
optParser.add_option("-v","--version", action="store_false", dest="verbose",default='gggggggg',help="no help")
options, args = optParser.parse_args()
if options.intNumber is not None:? #當有選項n時,則使用給出的參數值
??? #num = options.intNumber
??? print options.intNumber,options.verbose

else:
??? for i in range(1,5):? #不給選項n的情況下,默認輸出的是1~4
??????? #num = i
??????? print i

打開cmd運行如下:

Python中optparse模塊使用淺析_第1張圖片


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 美国一级片免费看 | 成人三级视频 | 成人网在线免费观看 | 欧美最爽乱淫视频免 | 欧美成人一区二区三区在线视频 | 91青青操 | 日韩精品免费一级视频 | 婷婷久久无码欧美人妻 | 91精品久久久久久久久久小网站 | 午夜免费| se视频在线观看 | 新婚人妻不戴套国产精品 | 久久久激情视频 | 欧美级 | 欧美69视频在线 | 九九视频高清视频免费观看 | 国产精品自拍在线观看 | 国产九色| 欧美操人视频 | 国产欧美一区二区三区精品 | 福利国产在线 | 国产在线精品一区二区三区 | 91高清在线观看 | 天天噜夜夜操 | 亚洲一区黄色 | 精品久久久久久久久久久久 | 伊人蕉久影院 | 日韩一区二区福利视频 | 欧美日韩一区二区在线观看视频 | 日韩视频在线精品视频免费观看 | 日韩欧美中文在线 | 欧美日本国产VA高清CABAL | 91丨九色丨首页在线观看 | 欧美亚洲一区 | 欧美国产激情二区三区 | 成人免费视频一区 | 日本在线无 | 一区二区三区欧美在线观看 | 欧美福利一区二区三区 | 国产欧美日韩精品a在线观看高清 | 日韩免费精品一级毛片 |