configparser簡介
- ConfigParser模塊已在Python 3中重命名為configparser
- 該模塊定義了ConfigParser類。 ConfigParser類實現一種基本的配置文件解析器語言,該語言提供的結構類似於 .ini 文件中的結構
ini文件相關知識
- 鍵值對可用 = 或者 : 進行分隔
- section 的名字是區分大小寫的,而 option 的名字是不區分大小寫的
- 鍵值對中頭部和尾部的空白符會被去掉
- 值可以為多行
- 配置文件可以包含注釋,注釋以 # 或者 ; 為前綴
ini文件示例
[server] age = 45 username = yes # server就是section # age、username就是option
操作ini文件
認准三部曲
- 實例化ConfigParser類
- 讀取配置文件
- 操作配置文件
基礎代碼
1 import configparser 2 3 filename = 'F:/Interface/config/server.ini' 4 # 實例化configparser 5 config = configparser.ConfigParser() 6 7 # 讀取配置文件 8 config.read(filename, encoding="utf-8-sig") 9 10 # 獲取某個option的值(最常見的操作) 11 config.get(section="server", option="username")
包含知識點
- 當你配置文件有中文時,在調用 read() 方法時,需要傳 encoding="utf-8-sig" 參數
- 最常見的操作就是 get(section,option,fallback="默認值") ,獲取某個option的值,當然也可以傳個 fallback ,當你的option不存在的時候,就會返回fallback的值
configparser封裝類
為了更好的復用configparser,我們將常用的方法寫成一個封裝類
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 """ 5 __title__ = 操作配置文件工具類 6 """ 7 8 import configparser 9 10 11 class ConfigUtil: 12 # 實例化configparser 13 config = configparser.ConfigParser() 14 15 def read(self, filename): 16 """ 17 讀取配置文件 18 :param filename: 配置文件路徑 19 """ 20 self.config.read(filename, encoding="utf-8-sig") 21 22 def get(self, _options, _section='server'): 23 """ 24 獲取某個options值 25 :param _options: option 26 :param _section: section 27 """ 28 try: 29 # 方式一:調用方法 30 value = self.config.get(section=_section, option=_options, fallback="默認值,key不存在則返回此值") 31 32 # 方式二:索引 33 value = self.config[_section][_options] 34 except Exception as e: 35 print("沒有獲取到值") 36 value = None 37 return value 38 39 def get_options_key_value(self, _section): 40 """ 41 以列表(name,value)的形式返回section中的每個值 42 :param _section: 某個section 43 :return: list[tuple(key,value)] 44 """ 45 return self.config.items(_section) 46 47 def get_all_section(self): 48 """ 49 獲取所有section 50 """ 51 return self.config.sections() 52 53 def get_options_by_section(self, _section): 54 """ 55 獲取section下所有可用options 56 """ 57 # 方式一 58 keys = [] 59 for _options in self.config[_section]: 60 keys.append(_options) 61 62 # 方式二(推薦) 63 keys = self.config.options(_section) 64 return keys 65 66 def assert_section_in_config(self, _section): 67 """ 68 判斷section是否存在 69 :param _section: 需要判斷的section 70 """ 71 return _section in self.config 72 73 def assert_options_in_section(self, _section, _options): 74 """ 75 判斷options是否存在某個section中 76 :param _section: 某個section 77 :param _options: 需要判斷的options的key值 78 """ 79 return _options in self.config[_section] 80 81 82 configUtil = ConfigUtil() 83 84 if __name__ == '__main__': 85 filename = 'F:/imocInterface/config/server.ini' 86 configUtil.read(filename) 87 print(configUtil.get("username")) 88 print(configUtil.get_all_section()) 89 print(configUtil.assert_section_in_config("server")) 90 print(configUtil.get_options_by_section("server")) 91 print(configUtil.assert_options_in_section("server", "usernsame")) 92 print(configUtil.get_options_key_value("server"))