找回密码
 会员注册
查看: 28|回复: 0

Python配置文件config.ini用法详解

[复制链接]

11

主题

0

回帖

34

积分

新手上路

积分
34
发表于 2024-9-10 00:58:02 | 显示全部楼层 |阅读模式
1、介绍config.ini文件config.ini是一种配置文件,常用于存储程序或系统的配置信息。它通常采用键值对的形式,每一行表示一个配置项,用等号(=)将键和值分隔开。config.ini文件可以包含多个节(section),每个节可以包含多个配置项2、创建config.ini文件 有两种方法:    1、手动创建config.ini文件    2、在调用写入信息到config.ini文件时会自动创建[database]host=localhostport=5432username=myusernamepassword=mypassword[api]key=myapikeyurl=https://api.example.comini结构:        `片段(section)对应[database]`        `选项(option)对应key1,相当于host`        `值(value)对应value1,相当于locahost`3、写入 config.ini文件importconfigparserdefcreate_config():config=configparser.ConfigParser()#设置database部分config['database']={'host':'localhost','port':'5432','username':'myusername','password':'mypassword'}#设置api部分config['api']={'key':'myapikey','url':'https://api.example.com'}#写入到文件withopen('config.ini','w')asconfigfile:config.write(configfile)create_config()'运行运行这段代码创建了一个名为config.ini的文件,并填充了它与我们在之前的INI文件示例中看到的相同的值。 4、读取config.ini文件 简单版:importconfigparserdefread_config():config=configparser.ConfigParser()config.read('config.ini')#读取数据库配置db_host=config.get('database','host')db_port=config.get('database','port')db_username=config.get('database','username')db_password=config.get('database','password')#读取API配置api_key=config.get('api','key')api_url=config.get('api','url')returndb_host,db_port,db_username,db_password,api_key,api_urldb_host,db_port,db_username,db_password,api_key,api_url=read_config()print("Database数据:")print(f"Host:{db_host}")print(f"Port:{db_port}")print(f"Username:{db_username}")print(f"Password:{db_password}")print("\nAPI数据:")print(f"Key:{api_key}")print(f"URL:{api_url}")'运行运行Database数据:Host:localhostPort:5432Username:myusernamePassword:mypasswordAPI数据:Key:myapikeyURL:https://api.example.comProcessfinishedwithxitcode0优化版:importconfigparserimportos#读取配置文件defread_config():#获取当前文件所在目录root_dir=os.path.dirname(os.path.dirname(__file__))#组装config.ini路径,也可以直接写配置文件的具体路径,不用自动获取config_dir=os.path.join(root_dir,'config','config.ini')#创建configparser对象cf=configparser.ConfigParser()#读取config.inicf.read(config_dir,encoding="utf-8")returncfcf=read_config()api_url=cf.get('api','url')#注意端口要用getint方法获取database_port=cf.getint('database','port')print(api_url)print(database_port)https://api.example.com5432Processfinishedwithexitcode05、总结:读取配置文件的常用方法: #创建configparser对象cf=configparser.ConfigParser()#读取配置文件常用的方法介绍 cf.read(filename)#读取文件,返回filename的listcf.sections()#获取配置文件中所有sections的listcf.options(section)#获取指定section的键值listcf.items(section)#获取指定section下所有的键值对listcf.get(section,key)#获取指定section下指定key的value值,返回strcf.getint(section,key)#获取指定sections下指定key的value值,返回intcf.getfloat(section,key)#获取指定sections下指定key的value值,返回floatcf.getboolean(section,key)#获取指定sections下指定key的value值,返回booleancf.has_section(section)#获取是否包含某个section,返回booleancf.has_option(section,key)#获取是否包含某个section的某个键,返回boolean写入配置文件的常用方法:#写入配置文件常用方法介绍cf=configparser.ConfigParser()#实例化对象cf.read(self.filename)#读取文件,如果是重新写入,覆盖原有内容不需要读取cf.add_section(section)#添加sections值cf.set(section,option,value)#在指定的sections中添加键值对cf.remove_section(section)#移除sections,需要先cf.read(filename)cf.remove_option(section,option)#移除指定sections下的options,需要先cf.read(filename)样例介绍:#样例介绍classWriteConfig():"""写入config文件"""def__init__(self,filename,filepath=r"D:\python_file\boke\config"):self.filename=filenameos.chdir(filepath)self.cf=configparser.ConfigParser()self.cf.read(self.filename)#如果修改,则必须读原文件def_with_file(self):#writetofilewithopen(self.filename,"w+")asf:self.cf.write(f)defadd_section(self,section):#写入section值self.cf.add_section(section)self._with_file()defset_options(self,section,option,value=None):"""写入option值"""self.cf.set(section,option,value)self._with_file()defremove_section(self,section):"""移除section值"""self.cf.remove_section(section)self._with_file()defremove_option(self,section,option):"""移除option值"""self.cf.remove_option(section,option)self._with_file()'运行运行
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-8 12:11 , Processed in 0.466608 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表