淺談optparse 解析命令行參數庫


 使用的背景

 

在工作中我們經常要制定運行腳本的一些參數,因為有些東西是隨着我么需求要改變的,所以在為們寫程序的時候就一定不能把寫死,這樣我們就要設置參數

在python中我們可以通過sys 模板的argv 但是這模板功能遠沒有今天我們介紹的optparse模塊強大。


介紹下最基本的用法:

  • 使用optionparser模塊來解析
  • optionparser的執行過程:
  • 導入optionparser : from optparse import OptionParser構造optionparser的對象:parser = OptionParser()

 

  • 往optionparser對象中增加option :parser.add_option()

 

  • 調用optionparser的解析函數:(options, args) = parser.parse_args()在options中使用解析到的options,在args中使用其他的args。

 


下面我們寫個用例腳本進行簡單的說明:

  1. 首先我們要導入模塊    from  optparse import OptionParser
  2.   創建一個  用戶help說明的文檔參數 (這個是可選的)
    usage="myprog [-f<filename>][-s<xyz>]arg1[,arg2..]"
  3.   創建一個實例對象 optParser=OptionParser(usage)

 

      4.   在對象中增加參數選項   optParser.add_option("-f","--file",action="store",type="string",dest="filename",help='-f參數說明信息 ')
                                          optParser.add_option("-v","--version",action="store_false",dest="verbose",default="None",help="-v參數說明信息",)

 

     5.調用optionparser的解析函數 讓用戶輸入的命令保存在optParser.parse_args(y) y中  options,args=optParser.parse_args()

 


 

整體的腳本

 

 
         
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")
optParser.add_option("-v","--vison",action="store_false",dest="verbose",default="none",help="make losts of noise [default]")
fakeArgs=['-f',"file.txt",'-v','good luck to you','arg2','arg']
options,args=optParser.parse_args(fakeArgs)

print options.filename
print args
print options.verbose
 
        

 


運行結果:

分析  因為我們傳入了參數-f文件名為 file.txt.當我們條用options.filenmae  時就顯示我們的傳入的文件名為file.txt

       我們傳入的參數沒有被腳本調用被傳入了ARGS 列表中

      因為我們第一action 為 store_false 所以不管-v傳入什么參數。verbose的值都沒false(store_ture 相反)

 


 


 

 實例:

 1 from optparse import OptionParser
 2 optParser = OptionParser()
 3 optParser.add_option("-n","--number",action = "store",type="int",dest = "intNumber")
 4 optParser.add_option("-v","--version", action="store_false", dest="verbose",default='gggggggg',help="no help")
 5 options, args = optParser.parse_args()
 6 if options.intNumber is not None:
 7     #num = options.intNumber
 8     print options.intNumber,options.verbose
 9 
10 else:
11     for i in range(1,5):
12         #num = i
13         print i

 

 結果

注意一點當你設置action_false 如果沒有傳入參數測不生效。如看上面第一次執行

 


免責聲明!

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



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