Python读取ini配置文件
读取配置ini文件,保存至对象的属性中
由于经常需要设置一些变量,如果直接放在主程序中,一大堆的变量,不便管理。因此,通过ini文件的配置方式,自动读取配置文件中的信息将其保存到对象中量,便于管理与调用,后续直接通过调用对象属性就可使用该变量。以下给出代码和使用示例~~
import configparser
###################################################################################################
# IniConf解析Ini文件 将所有配置信息以变量方式存储到 某个对象中,方便管理
# 一般把不常发生变动的值通过IniConf读取
# 文件模板示例:
# [url] ; section名称
# baidu = 'https://www.jb51.net'
# port = 80
#
# [email]
# sender = 'xxx@qq.com'
## [tan]
# (1) 每个session下有一个赋值语句
# (2) 字符串需要用单引号,否则无法解析
# (3) 生成的变量名为:session名_items名,并存入IniConf对象中
# 例如:上述的port对应的变量名:url_port = 80
# (4) 若某个session下没有对应的属性语句,则该session不执行任何赋值属性
# (4) Attention:某个session下的赋值语句开始不能添加空格!!!!否则无法解析该变量
###################################################################################################
class IniConf():
def __init__(self,filename):
self.filename = filename # 路径名
self.getConf() # 解析
pass
def getConf(self):
try:
con = configparser.ConfigParser()
con.read(self.filename, encoding='utf-8') # 读取文件
print('Get Ready to read ' + self.filename + '...')
pass
except:
print('Error happend...')
sections = con.sections() # 获取所有section
# print('sessions:',sections)
for sc in sections: # 循环每个Session
items = con.items(sc) # 返回结果为元组
if len(items)==0: # 长度为0 则表示该session没有属性
pass
else: # 长度不为0 则表示该session有属性
for it in items: # 循环遍历 每个属性
loc = 'self.' + sc + '_' + it[0] +' = ' + it[1] # 生成对应的属性赋值变量语句
exec(loc) # 执行语句
pass
print('Get Conf Successfully!\n')
self.toString()
pass
def toString(self): # 打印所有属性key = value
print('All Conf Parameters:')
for dic in self.__dict__:
print(' ',dic,':',self.__dict__[dic])
pass
pass
if __name__ == '__main__':
filename = './Resource/conf.ini' # 文件路径
IniConfBoj = IniConf(filename = filename) # Object
# IniConfBoj.toString() # 打印所有属性
pass
ini文件如下:
[url] ; section名称
baidu = 'https://www.jb51.net'
port = 80
[email]
sender = 'xxx@qq.com'
[tan]
结果:
Get Ready to read ./Resource/conf.ini...
Get Conf Successfully!
All Conf Parameters:
filename : ./Resource/conf.ini
url_baidu : https://www.jb51.net
url_port : 80
email_sender : xxx@qq.com
Process finished with exit code 0