zoukankan      html  css  js  c++  java
  • Python读取properties配置文件操作。分享给大家供大家参考,具体如下:

    Python读取properties配置文件操作。分享给大家供大家参考,具体如下:

    工作需要将Java项目的逻辑改为python执行,Java的很多配置文件都是.properties的,文件内容的格式是“键.键.键。。。=值”的格式例如A.B.C=value1,D.F=value2等。并且“#”用来注视。python没有专门处理properties格式的包,只有处理标准的ini格式的包。所以需要自己写一个python程序来处理。不说了上程序。

    这里参考前面一篇://www.jb51.net/article/137390.htm

    主要在前文的基础上,增加key.key.key=value的形式的支持

    Util.py文件:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    class Properties(object):
      def __init__(self, fileName):
        self.fileName = fileName
        self.properties = {}
      def __getDict(self,strName,dictName,value):
        if(strName.find('.')>0):
          k = strName.split('.')[0]
          dictName.setdefault(k,{})
          return self.__getDict(strName[len(k)+1:],dictName[k],value)
        else:
          dictName[strName] = value
          return
      def getProperties(self):
        try:
          pro_file = open(self.fileName, 'Ur')
          for line in pro_file.readlines():
            line = line.strip().replace(' ', '')
            if line.find("#")!=-1:
              line=line[0:line.find('#')]
            if line.find('=') > 0:
              strs = line.split('=')
              strs[1]= line[len(strs[0])+1:]
              self.__getDict(strs[0].strip(),self.properties,strs[1].strip())
        except Exception, e:
          raise e
        else:
          pro_file.close()
        return self.properties

    filename.properties文件:

    1
    2
    3
    4
    a.b.d=v1
    a.c=v2
    d.e=v3
    f=v4

    测试文件text.py:

    1
    2
    3
    from Util import Properties
    dictProperties=Properties("filename.properties").getProperties()
    print dictProperties

    输出:

    {'a': {'c': 'v2', 'b': {'d': 'v1'}}, 'd': {'e': 'v3'}, 'f': 'v4'}

    pip3 install properties #可以解决ModuleNotFoundError: No module named 'properties'问题
    

    但是并没有items模块, 开源参考https://github.com/seequent/p...,官网参考https://propertiespy.readthed...

  • 相关阅读:
    左偏树
    “今日头条杯”首届湖北省大学程序设计竞赛现场赛
    最短路
    BP神经网络算法改进
    图论学习路线
    差分演化算法
    51Nod 1413 权势二进制
    51Nod 1315 合法整数集
    Treap(树堆)
    今日头条杯2018湖北省大学生程序设计竞赛(网络赛)
  • 原文地址:https://www.cnblogs.com/xinxihua/p/12615351.html
Copyright © 2011-2022 走看看