移动 前端 Python Android JavaPython爬虫作业Python三期爬虫作业

python解析config配置文件的2种方法

2018-01-07  本文已影响598人  chengcxy

工作中代码测试的流程一般是先在测试环境运行,测试稳定通过以后,再将代码放到生产环境进行调度,这时候就需要将数据库链接更换一下,如果每次都这样改动,岂不是太麻烦了,如果从面向对象的角度去考虑,我们将代码从测试扔到生产也不用改动(或者改动很小)就会帮我们省掉很多事情,需要做什么,无非就是将数据库的链接密码替换,config配置这时候就来帮我们做这件事.

在测试环境里设置一个config,里面是测试数据库链接,我们后面代码链接数据库就是通过读取配置文件去自动链接,同时我们将配置文件拷贝到生产环境,将链接替换掉,那么我们代码就不用去修改,直接上传就好了.

一.configparser模块

config文件有的是config.ini这样的,解析这个文件python3版本以上也有相应的包 configparser去解析,下面是文件截图和解析代码 config.ini

解析代码:

import configparser

Config = configparser.ConfigParser()
Config.read("config.ini")
data = Config.sections()
print(data)
db_host = Config.get("db", "db_host")
print(db_host)
result

二.yaml模块

第二种config文件是config.yaml,用到的是YAML语言,它是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便。 yaml介绍
comfig.yaml
import os
import yaml
config_file = os.path.dirname(os.path.realpath(__file__)) + '/config.yaml'
configs = yaml.load(open(config_file,'r'))
conns = configs.get('mysql.config')['conn']
for k,v in conns.items():
    print(k,'====:',v)
yaml result

为了方便调用,将其封装一下

import os
import yaml

class ConfigParser(object):

    config_file = os.path.dirname(os.path.realpath(__file__)) + '/config.yaml'
    configs = yaml.load(open(config_file,'r'))
    @classmethod
    def get(cls, server='mysql.config',key=None):
        if not cls.configs:
            cls.configs = yaml.load(open(cls.config_file, 'r'))
        section = cls.configs.get(server, None)
        if section is None:
            raise NotImplementedError
        value = section.get(key, None)
        if value is None:
                raise NotImplementedError
        return value

if __name__ == '__main__':
    configs = ConfigParser()
    mysql_conn = configs.get(key='conn')
    print(mysql_conn)

三.说明

文章转载自个人微信公众号pythonfan,接入了图灵机器人,图片 语音 都支持回复...
转载文章请备注来源!


微信公众号:pythonfan
上一篇下一篇

猜你喜欢

热点阅读