Python optparser庫詳解


Python optparser庫詳解

 

一直以來對optparser不是特別的理解,今天就狠下心,靜下心研究了一下這個庫。當然了,不敢說理解的很到位,但是足以應付正常的使用了。廢話不多說,開始今天的分享吧。

鎮樓圖


簡介

optparse模塊主要用來為腳本傳遞命令參數功能.

引入

在IDE中引入optparser是很方便的。

from optparser import OptionParser

初始化

相對而言,初始化需要我們多注意一點點了。 
因為我們有兩種不同的方式來初始化一個parser。

  • 帶有Usage選項: 
    這樣的好處是可以模擬帶有幫助的終端使用,如下
>>> from optparse import OptionParser
>>> usage = "myprog[ -f <filename>][-s <xyz>] arg1[,arg2..]" >>> parser=OptionParser(usage) #這里為類添加了參數usage

 

顯示的時候就會使這樣的了。

>>> parser.print_help()
Usage: myprog[ -f <filename>][-s <xyz>] arg1[,arg2..] Options: -h, --help show this help message and exit #此兩行根據option自動生成,比較智能額~~ -f FILENAME, --file=FILENAME  no any help #自定義幫助信息

 

 

  • 不帶Usage選項: 
    正常來說可以不用設置參數。
parser = OptionParser()

 

添加選項

為命令行添加選項是我們這次最主要的工作了,也是核心。但是在添加選項之前,我們應該明白,為什么要添加選項?選項的工作原理是什么?這樣我們才能更好的理解optparser的設計思想。

選項:類比於Unix的工作模式。舉例 ls -a 或者 ls -all. 
我們添加了一個名為all 的選項,為了簡化操作,默認設置為a.

在OptionParser中要想實現這樣的一個效果,我們只需要借助如下的一行代碼。

# 這只是示意而已,沒有什么意義 parser.add_option('-a' , '--all' )

 

核心

作為核心就是指add_option的其他的參數。有如下幾個:

  • action: 驗證輸入數據類型是否和type 匹配,並將符合要求的這個參數存儲到dest變量中。有以下幾個屬性: 
    • store 默認值 
      - store_false 標記而已 配合下邊的那個store_true來進行代碼的“標記”,輔助流程控制。
    • store_true 標記而已
  • type : 指的是對應於參數,如-f,-n等的接下來的那個參數的數據類型,有string,int,float等等
  • dest : 用於保存臨時變量,其值可以作為options的屬性進行訪問。存儲的內容就是如-f,-n 等緊挨着的那個參數內容。
  • help: 提供用戶友好的幫助信息,一般可以用來解釋本add_option方法的功能闡述。

單純的講起來很枯燥,下面看一個小例子就會明白了。

>>> parser.add_option("-f", "--file",action="store", type="string", dest="filename") <Option at 0x2d72f48: -f/--file> >>> args = ["-f", "foo.txt"] #這個是模擬命令行的輸入 >>> (options, args) = parser.parse_args(args) >>> options.filename 'foo.txt'

 

對於action屬性可以看看接下來的這段代碼。

>>> from optparse import OptionParser >>> parser=OptionParser() >>> parser.add_option("-v", action="store_true", dest="verbose") <Option at 0x2ceb888: -v> >>> parser.add_option("-q", action="store_false", dest="verbose") <Option at 0x2d68e48: -q> >>> 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參數的作用,其實就是給dest的默認值。

如果我們沒有指定dest的值的話,default的值就會作為dest的默認值來進行使用!

>>> parser.add_option("-x", action="store", dest="verbose", default="defaultvalue") <Option at 0x2d77148: -x> >>> options, args = parser.parse_args() #這里沒有傳參數 >>> options.verbose 'defaultvalue'
  • 1
  • 2
  • 3
  • 4
  • 5

完整的demo

from optparse import OptionParser usage = "myprog[ -f <filename>][-s <xyz>] 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 <filename>][-s <xyz>] arg1[,arg2..] Options: -h, --help show this help message and exit -f FILENAME, --file=FILENAME -v, --vison make lots of noise [default]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM