思路:

  一份默认配置,一份用户自定义配置,将两者结合,自定义优先级大于默认配置

目录结构

'''
用户自定义的配置文件,settings.py
'''
USER = 'xiaoming'
PASSWORD = ''

用户自定义配置

'''
系统默认配置文件,global_settings.py
''' TEL = ''

系统配置文件

'''用户自定义配置和系统默认配置文件的统一 config.py'''
import os
import importlib
from . import global_settings class Settings(object):
def __init__(self):
# 默认配置文件
for name in dir(global_settings):
if name.isupper():
value = getattr(global_settings,name)
setattr(self,name,value) # 自定义配置文件
settings_module = os.environ.get('USER_SETTINGS')
if not settings_module:
return
# 导入模块
m = importlib.import_module(settings_module)
for name in dir(m):
if name.isupper():
value = getattr(m,name)
setattr(self,name,value) settings = Settings()
'''
start.py
使用变量
'''
import os
os.environ['USER_SETTINGS'] = 'config.settings' if __name__ == '__main__':
from lib.conf.config import settings
print(settings.USER)

最新文章

  1. Java Web之会话管理一: 使用Cookie进行会话管理
  2. iOS-多线程 ,整理集锦,多种线程的创建
  3. Android 强制竖屏
  4. win7画板橡皮擦改变大小
  5. Servlet 编程 请求的转发
  6. Sprint第二个冲刺(第七天)
  7. PHP 安装 eaccelerator
  8. CSS超出2行省略号
  9. 【LeetCode 215】Kth Largest Element in an Array
  10. Microsoft Dynamics CRM 数据库连接存储位置在哪里 是在注册表里
  11. 编程语言的发展趋势by Anders Hejlsberg
  12. UVA 6199 不定根最小树形图
  13. logstash 处理各种时间格式
  14. 关于Oracle连接超时的问题
  15. [Usaco2007 Open]Fliptile 翻格子游戏
  16. Dynamics CRM 2015Online Update1 new feature之表单页Tabs切换
  17. Java数组的应用:案例:杨辉三角,三维数组,字符串数组
  18. 【RL-TCPnet网络教程】第15章 RL-TCPnet之创建多个TCP连接
  19. python练习一—文本转化渲染为html
  20. 进入正在运行的 docker 容器(docker container)

热门文章

  1. 小数末尾是0的,不显示0,有值才显示 StringFormat
  2. 二进制和ASCII文件的区别
  3. SVN + Jenkins 构建自动部署
  4. [LeetCode] 341. Flatten Nested List Iterator 压平嵌套链表迭代器
  5. 【VS开发】MFC多显示器适配显示设置
  6. 手贱重置了mysql密码,导致登陆不进去的解决办法
  7. java web中的相对路径和绝对路径
  8. python基础篇(六)
  9. 第2/7Beta冲刺
  10. flask报错 KeyError: <flask.cli.ScriptInfo object at 0x000001638AC164E0>