python封装configparser模块获取conf.ini值

news/2024/7/5 14:42:22

  configparser模块是python自带的从文件中获取固定格式参数的模块,因为是python只带的,大家用的应该很多,我觉得这个参数模块比较灵活,添加参数、修改参数、读取参数等都有对应的参数供用户使用。因为本人看的都是接近自动化框架方面的,主要用读取参数,手动操作添加和修改参数也许更方便。

  configparser模块读取的参数应该是不限文档格式:*.ini、*.conf、*.*,但是内容格式要按照固定格式来进行填写:

  [section]

  key = value

 1 #路径参数
 2 [path]
 3 my_dir = D:\python\workspace\pythontest
 4 log_path = %(my_dir)s\\log\\
 5 img_path = %(my_dir)s\screenshot\
 6 report_path = %(my_dir)s\\report\\
 7 
 8 #邮箱参数
 9 [email]
10 uesr = 1234567890
11 password = 123456
12 smtphost = smtp@163.com
13 from = 123123@163.com
14 to = wadsad@qq.com
15 
16 #日志参数
17 [log]
18 logtime = 112323
19 
20 #测试参数
21 [main]
22 ip = 109.132.19.7
23 port = 9900
24 url = http://%(ip)s:%(port)s/tes

  封装后的代码:

 1 #coding:utf-8
 2 import ConfigParser
 3 import os
 4 
 5 class ReadConfig(object):
 6     '''配置参数'''
 7     def __init__(self):
 8         '''
 9         用法:
10         conf = ReadConfig()
11         confinfo = conf.getconf("url")
12         '''
13         #设置conf.ini路径
14         current_dir = os.path.dirname(__file__)
15         top_one_dir = os.path.dirname(current_dir)
16         file_name = top_one_dir + "\\conf\\conf.ini"
17         #实例化ConfigParser对象
18         self.config = ConfigParser.ConfigParser()
19         self.config.read(file_name)
20 
21     def getconf(self, keyname):
22         num = len( self.config.sections() )
23         i = 0
24         print("num = ",num)
25         #根据sections的数量进行循环查找keyname是否存在
26         while i < num :
27             # 每次循环获取对应list中的section
28             section = self.config.sections()[i]
29             #如果keyname存在section中,则输出其参数值
30             if keyname in self.config.options(section):
31                 pass
32                 print("num --> ",i)
33                 print("section --->",section)
34                 print("keyname ---> ", keyname)
35                 self.info = self.config.get(section, keyname)
36                 break
37             else :
38                 i = i + 1
39         else :
40             print("ReadConfig()没有找到config文件对应的key")
41         return self.info
42 
43 if __name__ == "__main__":
44     conf = ReadConfig()
45     confinfo = conf.getconf("url")
46     print("config --- >",confinfo)

  一开始本想通过section值获取对应的key以及value,但是试了很多次都不成功。原设想:

1     conf = ReadConfig()
2     confinfo = conf.getconf("main").url

  main为section,url为key。

  但是这种通过key获取参数value的方法也可以实现我的目的。

1     conf = ReadConfig()
2     confinfo = conf.getconf("url")

  url为key

运行结果:

  ini文件存放在pythontest/conf下

  封装后的py文件存放在pythontest/commlib下

 


http://www.niftyadmin.cn/n/3044467.html

相关文章

currenthashmap如何实现线程安全_死磕Java并发编程(8):CurrentHashMap如何实现高效地线程安全?在Java8中有哪些设计实现的演进?...

这篇文章一开始我以为会比较简单&#xff0c;但是在深入源码分析时&#xff0c;遇到了很大的阻碍&#xff0c;比前面我们分析AQS以及读写锁的源码要难理解的多&#xff0c;断断续续也写了4天了。如果你看完还是没有理解的话&#xff0c;那我在这里表示深深的歉意&#xff0c;同…

Servlet综述

1、要谈到Servlet技术&#xff0c;不得不先谈谈动态网页的概念。 编写过网页的人都知道&#xff0c;浏览器能够根据HTML静态标记语言来显示各式各样的网页。但是如果我们需要在网页上完成一些业务逻辑&#xff1a;比如登陆验证。或者说网页显示的内容在服务器的数据库中。如果是…

Servlet技术实战

Servlet的框架是由两个java包组成的&#xff1a;javax.servlet和javax.servlet.http. javax.servlet包含了支持普通协议无关的Servlet的类。 javax.servlet.http包括了对HTTP协议的特别支持。  servlet的框架的核心是javax.servlet.Servlet接口&#xff0c;所有的Servle…

python如何编写树_python实现树结构

树在计算机科学的许多领域中使用&#xff0c;包括操作系统&#xff0c;图形&#xff0c;数据库系统和计算机网络。树数据结构与他们的植物表亲有许多共同之处。树数据结构具有根&#xff0c;分支和叶。自然界中的树和计算机科学中的树之间的区别在于树数据结构的根在顶部&#…

IBATIS简介

ibatis 开发学习笔记 相对Hibernate和Apache OJB 等“一站式”ORM解决方案而言&#xff0c;ibatis 是一种“半自动化”的ORM实现。 目前主流的ORM&#xff0c;无论Hibernate 还是Apache OJB&#xff0c;都对数据库结构提供了较为完整的封装&#xff0c;提供了从POJO 到数据库表…

ibatis 实例配置

以以下配置为例说明Ibatis的配置&#xff1a; <sqlMapConfig> <settings cacheModelsEnabled"true" enhancementEnabled"true" lazyLoadingEnabled"true" errorTracingEnabled"true" maxRequest…

初学vuejs

现在的前端&#xff0c;各种框架各种语言层出不穷&#xff0c;其目的都是为了解决问题而出现的&#xff0c;在越来越发达的移动端上当然也少不了框架的应用了&#xff0c;其中用的最多也最出名的三大框架就是Angular&#xff0c;react 和vue了&#xff0c;vue算是后起之秀了&am…