python加载properties配置

发布时间:2019-09-25 08:21:37编辑:auto阅读(1912)

    参考来源:http://blog.csdn.net/bobzhangshaobo/article/details/47617107
    我们都是在java里面遇到要解析properties文件,在python中基本没有遇到这中情况,今天用python跑深度学习的时候,发现有些参数可以放在一个global.properties全局文件中,这样使用的时候更加方便。原理都是加载文件,然后用line方法进行解析判断”=”,自己从网上找到一个工具类,记录一下。

    工具类 PropertiesUtiil.py

    # -*- coding:utf-8 -*-
    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('\n', '')  
                    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  

    通过上面的代码就可以解析了properties文件了。新建一个文件

    global.properties 文件

    a.name.last=jie
    b.name.first=shi
    #b.name=shijie

    测试 test.py

    from PropertiesUtil import Properties
    dictProperties=Properties("global.properties").getProperties()
    print dictProperties

    控制台打印:

    /usr/bin/python2.7 /home/tengxing/rude-carnie/test.py
    {'a': {'name': {'last': 'jie'}}, 'b': {'name': {'first': 'shi'}}}
    
    Process finished with exit code 0
    

    我感觉还是挺方便的,就对做深度学习来说吧,把模型的的位置,训练数据放在一个global.properties文件中,方便管理。

关键字