Python读取ini配置文件,保存到对象属性

cuntou0906 2021-04-06 17:35:04
Python 配置 配置文件 读取 ini


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
版权声明
本文为[cuntou0906]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/5044621/blog/5009769

  1. 商业数据分析从入门到入职(7)Python基础数据结构及其操作
  2. 商业数据分析从入门到入职(6)Python程序结构和函数
  3. Business data analysis from entry to entry (9) Python Network Data Acquisition
  4. Business data analysis from entry to entry (8) Python module, file IO and object oriented
  5. Business data analysis from entry to entry (7) Python basic data structure and its operation
  6. Business data analysis from entry to entry (6) Python program structure and function
  7. 简简单单实现 Python Web 的登录注册页面,还包含一半逻辑。
  8. Simple implementation of Python web login registration page, but also contains half of the logic.
  9. 什么是pip?Python新手入门指南
  10. What is PIP? Getting started with Python
  11. Python uses for... Else to jump out of double nested loop
  12. Python基础之:Python中的内部对象
  13. 人工智能入门:Python实现机器学习
  14. The foundation of Python: inner objects in Python
  15. Introduction to artificial intelligence: machine learning in Python
  16. Python基础之:Python中的内部对象
  17. The foundation of Python: inner objects in Python
  18. Python 小技之 Office 文件转 PDF
  19. 还在为多张Excel汇总统计发愁?Python 秒处理真香!
  20. 用 Python 制作音乐聚合下载器
  21. Spark Delta Lake 0.4.0 发布,支持 Python API 和部分 SQL
  22. How to transfer office files to PDF
  23. Are you still worried about multiple excel summary statistics? Python second processing really fragrant!
  24. Making music aggregate downloader with Python
  25. Spark delta Lake 0.4.0 is released, supporting Python API and part of SQL
  26. Python信息搜集
  27. Python information gathering
  28. Python - 关于类(self/cls) 以及 多进程通讯的思考
  29. Python - thinking about class (self / CLS) and multi process communication
  30. Python - 关于类(self/cls) 以及 多进程通讯的思考
  31. Python - thinking about class (self / CLS) and multi process communication
  32. Python信用评分卡建模(附代码)
  33. Python credit score card modeling (with code)
  34. 学Python需要学数据库吗?Python学习教程!
  35. Do you need to learn database to learn Python!
  36. Python私有变量如何定义?Python学习教程!
  37. How to define Python private variables? Python tutorial!
  38. Python数据分析入门(六):Pandas的函数应用
  39. Introduction to Python data analysis (6): function application of pandas
  40. 学Python需要学数据库吗?Python学习教程!
  41. Do you need to learn database to learn Python!
  42. Python描述 LeetCode 80. 删除有序数组中的重复项 II
  43. C++/python描述 AcWing 94. 递归实现排列型枚举
  44. C++/python描述 AcWing 92. 递归实现指数型枚举
  45. Python描述 LeetCode 88. 合并两个有序数组
  46. 苏州大学计算机考研 复试机试真题2013-2021真题及Python题解
  47. Python描述 LeetCode 781. 森林中的兔子
  48. 字典和json的区别是什么?Python学习
  49. Python describes leetcode 80. Removing duplicate items from ordered arrays II
  50. C + + / Python description acwing 94. Recursive implementation of permutation enumeration
  51. C + + / Python description acwing 92. Recursive implementation of exponential enumeration
  52. Python describes leetcode 88. Merging two ordered arrays
  53. Real computer test questions 2013-2021 of computer postgraduate entrance examination of Soochow University and python solutions
  54. The rabbit in the forest
  55. Python中的魔法属性
  56. What's the difference between dictionary and JSON? Python learning
  57. Magic properties in Python
  58. 字典和json的区别是什么?Python学习
  59. What's the difference between dictionary and JSON? Python learning
  60. python刷题-字母图形