以简单的方式处理项目中的配置文件

Config-Handler的Python项目详细描述


配置处理程序

以简单的方式处理项目中的配置文件。

PyPI versionBuild Status

GitHub issuesGitHub closed issuesGitHub closed pull requests

PyPI - Python VersionGitHubGitHub last commit

安装

> pip install config-handler

规则

规则1

使用ini文件进行配置。
关于这一点,请遵循ini文件语言:https://en.wikipedia.org/wiki/INI_file

规则2

只使用字符串、整数和布尔值。
如果你需要使用其他的东西,设计是不对的。

规则3

不要将配置文件(config.ini)放在Git存储库中。
相反,您有一个配置模板文件(config.ini.template)。

规则4

配置文件应该只包含用户可以更改的内容。
如果数据永远不会更改,请使用常量。

配置模板文件

config.ini.template文件应该是这样的:

Config template file

config.ini.template文件支持模板变量(${project_root_path})。

用法

情景1

<>你第一次运行你的应用程序,而CONTI.IN还不存在。 因此,您需要从config.ini.template文件创建它(如果需要,请使用模板变量):

importosfromconfig_handlerimportConfigHandlertemplate_config_variables={'project_root_path':os.path.join('path','to','project','root')}ConfigHandler('./config.ini').sync(template_config_variables)

在这个调用之后,config.ini文件被创建在config.ini.template所在的同一目录中,应该如下所示:

Config file

情景2

现在请阅读新创建的config.ini:

fromconfig_handlerimportConfigHandlerconfig=ConfigHandler('./config.ini').read()print(config.sections())# >>> ['app1', 'app2']print(dict(config['DEFAULT']))# >>> {'send_email': 'true', 'authenticate_user': 'true'}print(dict(config['app1']))# >>> {'send_email': 'false', 'line_height': '12', 'input_path': 'path/to/project/root/input/app1', 'authenticate_user': 'true'}print(config['DEFAULT']['send_email'])# >>> 'true'print(config['app1']['front_page_title'])# >>> 'Hello World!'print(config.getboolean('DEFAULT','send_email'))# >>> Trueprint(config.getboolean('app2','send_email'))# >>> False

.read()从python的本机Configuration file parser lib返回ConfigParser对象

情景3

用户在config.ini文件中做了一些更改:

Config file

开发人员在config.ini.template文件中进行了一些更改:

Config template file

然后您需要再次运行同步:

importosfromconfig_handlerimportConfigHandlertemplate_config_variables={'project_root_path':os.path.join('path','to','project','root')}ConfigHandler('./config.ini').sync(template_config_variables)

同步之后,config.ini文件应该如下所示:

Config file

因此,用户更改或添加的内容将保留在config.ini中。
在config.ini.template中添加的所有新内容也都添加到config.ini中。

情景4

您可以同时同步和读取:

fromconfig_handlerimportConfigHandlerconfig=ConfigHandler('./config.ini').sync({...}).read()...

异常处理

fromconfig_handlerimport(ConfigHandler,ConfigHandlerException,ConfigHandlerFileReadException)try:config=ConfigHandler('./config.ini').sync({...}).read()exceptConfigHandlerFileReadException:"""Read exceptions"""exceptConfigHandlerException:"""All Config Handler exceptions"""

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用freemarker(ftl模板)通过spring发送outlook电子邮件的java自定义表单   java Project Euler 17错误答案   java想澄清所有关于Android多屏幕尺寸支持的疑问吗?   如何使用Eclipse和Maven配置Java项目以连接到AmazonRDS   java如何在Java8中按流对映射对象按时间段求和?   我是Java新手,希望有人能帮我   java Spring boot,序列化和反序列化时Jackson Json问题   java扫雷器(不是算法,只是布局问题)   java找到一个字符[]的完全唯一排列吗?   java哪种CRC用于更改Desfire卡中的密钥   java如何修复越界索引错误?   java读取Excel数值单元格值   java如何正确构建“PUT方法”并执行“intern请求”?   java如何从XSD生成JAXB类?   java为什么要运行它?   Java,畸形异常   java Springsecurityldap:实例化InitialContextFactory com失败。太阳jndi。ldap。LDAPCTX工厂   解析Java无法读取文本文件   java在每个请求之前运行资源方法