zoukankan      html  css  js  c++  java
  • python封装configparser模块获取conf.ini值

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

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

      [section]

      key = value

     1 #路径参数
     2 [path]
     3 my_dir = D:pythonworkspacepythontest
     4 log_path = %(my_dir)s\log\
     5 img_path = %(my_dir)sscreenshot
     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下

  • 相关阅读:
    分布式文件系统--->fastDFS
    varnish4.0缓存代理配置
    varnish4.0缓存代理配置
    varnish4.0缓存代理配置
    SDN 是什么
    SDN 是什么
    SDN 是什么
    Solidworks如何保存为网页可以浏览的3D格式
    github 的 配置SSH
    当一个实例被创建,__init__()就会被自动调用
  • 原文地址:https://www.cnblogs.com/zhuque/p/8361633.html
Copyright © 2011-2022 走看看