通常,一个Web App在运行时都需要读取配置文件,比如数据库的用户名、口令等,在不同的环境中运行时,Web App可以通过读取不同的配置文件来获得正确的配置。
前言
学习笔记来源-廖雪峰老师
配置文件
1. 配置文件[开发环境的标准配置]
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Python基础- 配置文件[开发环境的标准配置]
'''
缺省配置
'''
configs = {
'debug': True,
'database': {
'host':"127.0.0.1",
"port":3306,
"user": "root",
"password":"",
"database":"sufadi"
},
"session":{
"secret": "sufadi"
}
}
2.覆盖配置文件的某些默认设置[生产环境的标准配置]
# config_override.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Python基础- 覆盖配置文件的某些默认设置[生产环境的标准配置]
configs = {
"database":{
"host":"192.168.0.100"
}
}
3. 配置文件[所有配置读取的统一]
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Python基础- 配置文件[所有配置读取的统一]
import config_default
class Dict(dict):
def __init__(self, name = (), values = (), **kw):
super(Dict, self).__init__(**kw)
for k, v in zip(name, values):
self[k] = v
def __getattr__(self, key):
try:
return self[key]
except KeyError:
raise AttributeError(r"Dict 内有该属性 %s" % key)
def __setattr__(self, key, value):
self[key] = value
def merge(defaults, override):
r = {}
for k, v in defaults.items():
if k in override:
if isinstance(v, dict):
r[k] = merge(v, override[k])
else:
r[k] = override[k]
else:
r[k] = v
return r
def toDict(d):
D = Dict()
for k, v in d.items():
D[k] = toDict(v) if isinstance(v, dict) else v
return D
configs = config_default.configs
try:
import config_override
configs = merge(configs, config_override.configs)
except ImportError:
pass
configs = toDict(configs)
默认的配置文件应该完全符合本地开发环境,这样,无需任何设置,就可以立刻启动服务器。
提交git
git add .
git commit -m "Python基础-项目-day6 配置文件"
git push -u origin master