1. 程式人生 > >python封裝configparser模塊獲取conf.ini值

python封裝configparser模塊獲取conf.ini值

png etc lis 讀取 存在 while odin top options

  configparser模塊是python自帶的從文件中獲取固定格式參數的模塊,因為是python只帶的,大家用的應該很多,我覺得這個參數模塊比較靈活,添加參數、修改參數、讀取參數等都有對應的參數供用戶使用。因為本人看的都是接近自動化框架方面的,主要用讀取參數,手動操作添加和修改參數也許更方便。

  configparser模塊讀取的參數應該是不限文檔格式:*.ini、*.conf、*.*,但是內容格式要按照固定格式來進行填寫:

  [section]

  key = value

 1 #路徑參數
 2 [path]
 3 my_dir = D:\python\workspace\pythontest
4 log_path = %(my_dir)s\\log\ 5 img_path = %(my_dir)s\screenshot 6 report_path = %(my_dir)s\\report\ 7 8 #郵箱參數 9 [email] 10 uesr = 1234567890 11 password = 123456 12 smtphost = smtp@163.com 13 from = 123123@163.com 14 to = [email protected] 15 16 #日誌參數 17 [log] 18 logtime = 112323 19 20 #測試參數
21 [main] 22 ip = 109.132.19.7 23 port = 9900 24 url = http://%(ip)s:%(port)s/tes

  封裝後的代碼:

 1 #coding:utf-8
 2 import ConfigParser
 3 import os
 4 
 5 class ReadConfig(object):
 6     ‘‘‘配置參數‘‘‘
 7     def __init__(self):
 8         ‘‘‘
 9         用法:
10         conf = ReadConfig()
11         confinfo = conf.getconf("url")
12 ‘‘‘ 13 #設置conf.ini路徑 14 current_dir = os.path.dirname(__file__) 15 top_one_dir = os.path.dirname(current_dir) 16 file_name = top_one_dir + "\\conf\\conf.ini" 17 #實例化ConfigParser對象 18 self.config = ConfigParser.ConfigParser() 19 self.config.read(file_name) 20 21 def getconf(self, keyname): 22 num = len( self.config.sections() ) 23 i = 0 24 print("num = ",num) 25 #根據sections的數量進行循環查找keyname是否存在 26 while i < num : 27 # 每次循環獲取對應list中的section 28 section = self.config.sections()[i] 29 #如果keyname存在section中,則輸出其參數值 30 if keyname in self.config.options(section): 31 pass 32 print("num --> ",i) 33 print("section --->",section) 34 print("keyname ---> ", keyname) 35 self.info = self.config.get(section, keyname) 36 break 37 else : 38 i = i + 1 39 return self.info 40 41 if __name__ == "__main__": 42 conf = ReadConfig() 43 confinfo = conf.getconf("url") 44 print("config --- >",confinfo)

  一開始本想通過section值獲取對應的key以及value,但是試了很多次都不成功。原設想:

1     conf = ReadConfig()
2     confinfo = conf.getconf("main").url

  main為section,url為key。

  但是這種通過key獲取參數value的方法也可以實現我的目的。

1     conf = ReadConfig()
2     confinfo = conf.getconf("url")

  url為key

運行結果:

技術分享圖片

  ini文件存放在pythontest/conf下

  封裝後的py文件存放在pythontest/commlib下

技術分享圖片

python封裝configparser模塊獲取conf.ini值