BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #7149同步于 2015/5/31
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

配置文件的生成和检查

kobe6672823
2015/5/31镜像同步4 回复
现在公司那边的配置文件都是这种形式的: xxx.py,里面写了一堆的 xxx = var这种形式的量,然后使用的时候,import xxx去获取这些配置文件的量。 现在觉得这种方法,在配置文件很多,配置文件内的配置项也很多的情况下,不好对这些配置文件进行检查: 1:检查配置项的类型,虽然python是弱类型,可是仍然想做一定的检查,不会发生本来想要一个数字,配成了一个字符串 2:是否缺少了某个配置项 3:对某些配置项做正则匹配 并且希望可以生成配置文件,生成的大概流程类似于: meta_json ---->> config.ini文件 ---->> config.py文件 1:其中meta_json文件中是config文件的一个“描述”,如描述了配置文件包含的项,项的类型,默认值,这些内容。 2:有个前端展示的工具,根据meta_json文件显示需要配置的项,然后填配置项的值。 3:根据填写的值生成config.ini的值,最后根据config.ini生成config.py文件供项目使用。 4:并且可以根据已有的meta_json文件检查原有的一些config.py。(就是上面所说的3点检查) 最后的一步“根据config.ini生成config.py”的意义在于,不会因为新增的这个功能,影响原来项目的调用。 请问一下大家有没有见过类似的比较好用的开源项目是做这方面的工作的,我google了一下,没发现有类似的项目。(是我使用的关键字太low,太弱了吗?) 而我自己是觉得,貌似直接做实现也不难,版上各位大神有什么建议没?
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
dss886机器人#1 · 2015/5/31
哇,,思路不错啊 【 在 kobe6672823 (哆啦B梦) 的大作中提到: 】 : 现在公司那边的配置文件都是这种形式的: : xxx.py,里面写了一堆的 xxx = var这种形式的量,然后使用的时候,import xxx去获取这些配置文件的量。 : 现在觉得这种方法,在配置文件很多,配置文件内的配置项也很多的情况下,不好对这些配置文件进行检查: : ...................
XiaoBiShou机器人#2 · 2015/6/1
直接 用json.dump()保存配置文件config.ini 用json.load()读取配置文件config.ini 如果有修改破坏了json格式,会读取失败 冗余的话可以同时维护一份config.ini.bak 当然读出来的都是字符串,如果是整型需要自己加转换 懒得告诉你我是照着代码说的 【 在 kobe6672823 的大作中提到: 】 : 现在公司那边的配置文件都是这种形式的: : xxx.py,里面写了一堆的 xxx = var这种形式的量,然后使用的时候,import xxx去获取这些配置文件的量。 : 现在觉得这种方法,在配置文件很多,配置文件内的配置项也很多的情况下,不好对这些配置文件进行检查: : ...................
nuanyangyang机器人#3 · 2015/6/1
文件: config.py main.py config.py name = "hello" age = 20 url = "http://www.google.com/" main.py import config def check_exist(name): if getattr(config, name) == None: raise Error("Global variable '{}' is necessary.".format(name)) def check_type(name, ty): check_exist(name) if not isinstance(getattr(config, name), ty): raise Error("Global variable '{}' must be a {}.".format(name, ty)) import re def check_match(name, regexp): check_type(name, str) val = getattr(config, name) if re.match(regexp, val) == None raise Error("Global variable '{}' does not match regexp {}.".format(name, regexp)) check_exist("name") check_type("age", int) check_match("url", r"http://\w+(.\w+)*/")
qiukun机器人#4 · 2015/6/1
不来一发新字符串内插? 【 在 nuanyangyang 的大作中提到: 】 : 文件: : [code=text] : config.py : ...................