python—模塊optparse的用法


1.什么是optparse:

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

optparse用於處理命令行參數:

 

2.基本用法

 1 # 首先你必須導入該類,並創建一個OptionParser對象,然后再使用parser.add_option(...)待定義命令行參數
 2 
 3 import optparse
 4 
 5 #實例化一個 OptionParser 對象(可以帶參,也可以不帶參數),帶參的話會把參數變量的內容作為幫助信息輸出。
 6 Usage = 'main_analyze.py -d yyyy-mm-dd -p(path)'
 7 Parser = optparse.OptionParser(usage=Usage)
 8 
 9 def usage():
10     Parser.add_option("-d", "--date", dest="date", default="", help=r'yyyy-mm-dd 可當做一個通配使用')
11     Parser.add_option("-l", "--log-path", dest="path", help=r"Log file dir.")
15     Parser.add_option("-c", "--channel", dest="channel", default="\d+", help=r"Log file dir.")   ## -c/--channel 都可以
16 
17 
18 if __name__ == '__main__':
19     usage()
20 (option, args) = Parser.parse_args() #解析腳本輸入的參數值,options是一個包含了option值的對象 #args是一個位置參數的列表
21   anal = bbt_analyze.Analyze(option.date, option.path, option.channel)
22   anal.run()
 # bbt_analyze.py文件
1
class Analyze: 2 def __init__(self, date, path channel): 3 self.date = date 4 self.year, self.month, self.day = date.split('-') 5 self.path = path 6 self.patern = re.compile( 7 r'%s/%s/%s/%s/' % (app_id, platform, channel_type, channel) + self.year + '/' + str( 8 int(self.month)) + '/' + str(int(self.day)))

 

各個參數的含義:

dest:用於保存輸入的臨時變量,其值通過options的屬性進行訪問,存儲的內容是dest之前輸入的參數,多個參數用逗號分隔
type: 用於檢查命令行參數傳入的參數的數據類型是否符合要求,有 string,int,float 等類型
help:用於生成幫助信息
default: 給dest的默認值,如果用戶沒有在命令行參數給dest分配值,則使用默認值

 

3.運行

1. 可以在pycharm中配置參數 

 

2.在終端的時候直接運行文件

列如:

1 import optparse
2 usage="python %prog -H <target host> -p/-P <target ports>"  #用於顯示幫助信息
3 parser=optparse.OptionParser(usage)  #創建對象實例
4 parser.add_option('-H',dest='Host',type='string',help='target host')   ##需要的命令行參數
5 parser.add_option('-P','-p',dest='Ports',type='string',help='target ports' default="20,21")  ## -p/-P 都可以
6 (options,args)=parser.parse_args()
7 print(options.Host)
8 print(options.Ports)

 

 


免責聲明!

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



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