一、ini文件的组成
一个ini文件是由多个section组成,每个section中以key=vlaue形式存储数据;
二、python读取ini文件数据
1、导包
import configparser config = configparser.ConfigParser() # 类实例化 # 定义文件路径 path='./ConfigParser.ini'
2.读取文件内容
# 第一种读取ini文件方式,通过read方法 config.read(path) value=config['select']['url'] print('第一种方法读取到的值:',value) # 第二种读取ini文件方式,通过get方法 value=config.get('select','url') print('第二种方法读取到的值:',value) # 第三种读取ini文件方式,读取到一个section中的所有数据,返回一个列表 value = config.items('select') print('第三种方法读取到的值:',value)
返回结果:
3、通过上面两种方式,我们发现读取到的数据全部是str类型。如果我们想要得到指定数据类型的数据可以使用以下方法:
getint() getfloat() getboolean()
value = config.getint('connect_mysql','port') print('这是第三种方法读取到的值:',value) print('这是第三种方法读取到的值的数据类型:',type(value))
4.写入数据到ini文件中
# 将数据写入到ini文件中 config.add_section('login') # 首先添加一个新的section config.set('login','username','admin') # 写入数据 config.set('login','password','123456') # 写入数据 config.write(open(path,'a')) #保存数据
5.获取到ini文件所有的section
# 读取ini文件中所有的section section = config.sections() print(section)
三、configparser封装类
为了更好的复用configparser,我们将常用的方法写成一个封装类
#!/usr/bin/env python # -*- coding: utf-8 -*- """ __title__ = 操作配置文件工具类 """ import configparser class ConfigUtil: # 实例化configparser config = configparser.ConfigParser() def read(self, filename): """ 读取配置文件 :param filename: 配置文件路径 """ self.config.read(filename, encoding="utf-8-sig") def get(self, _section,_options): """ _section下获取某个options值 :param _options: option :param _section: section """ try: value = self.config[_section][_options] except Exception as e: print("没有获取到值") value = None return value def get_options_key_value(self, _section): """ 以列表(name,value)的形式返回section中的每个值 :param _section: 某个section :return: list[tuple(key,value)] """ return self.config.items(_section) def get_all_section(self): """ 获取所有section """ return self.config.sections() def get_options_by_section(self, _section): """ 获取section下所有可用options """ # (推荐) keys = self.config.options(_section) return keys def assert_section_in_config(self, _section): """ 判断section是否存在 :param _section: 需要判断的section """ return _section in self.config def assert_options_in_section(self, _section, _options): """ 判断options是否存在某个section中 :param _section: 某个section :param _options: 需要判断的options的key值 """ return _options in self.config[_section] def Get_data_type(self,_section,_options,types="getint"): """ 得到指定数据类型的数据 :param _section: :param _options: :return: """ global value if types=="getint": value = self.config.getint(_section, _options) print(type(value)) if types=="getfloat": value = self.config.getint(_section, _options) print(type(value)) if types=="getboolean": value = self.config.getint(_section, _options) print(type(value)) return value def write_init(self,_section,key,value,path): """ 写入ini文件 :return: """ if _section is not None: self.config.add_section(_section) # 首先添加一个新的section self.config.set(_section, key, value) # 写入数据 self.config.write(open(path, 'a')) else: return None configUtil = ConfigUtil() if __name__ == '__main__': filename = './server.ini' configUtil.read(filename) print(configUtil.get("select","broswer")) print(configUtil.get_options_key_value("select")) print(configUtil.get_all_section()) print(configUtil.get_options_by_section("connect_mysql")) print(configUtil.assert_section_in_config("login")) print(configUtil.assert_options_in_section("login","username")) print(configUtil.Get_data_type("connect_mysql","port")) print(configUtil.write_init("TEST01","USER","cs01",filename))
返回结果:
标签:配置文件,05,Python,section,value,self,print,config,options From: https://www.cnblogs.com/xfbk/p/17028612.html