我的项目中有一个settings.py
文件:
"Nickname of the user to check the games for"
USERNAME = "user"
不幸的是,每次升级都会被覆盖。因此,我想允许用户通过创建.py
文件$XDG_CONFIG_HOME/myapp/config.py
来覆盖默认设置,例如包含
USERNAME = "real-user"
是否可以修改settings.py
以便以通用方式从.../config.py
文件中删除任何变量,例如在config.py
末尾包含此文件?
我正在使用Python 3
答案 0 :(得分:1)
我假设您从settings.py
文件中获取值的方式是import
:
import settings
print(settings.USERNAME)
然后你可以通过在最后添加这样的东西来改变它,这将做你想要的。
settings.py
"Nickname of the user to check the games for"
USERNAME = "user"
def _read_overrides(filename):
localdict = {} # populated by exec
try:
with open(filename) as file:
exec(compile(file.read(), filename, 'exec'),
{'__builtins__': None}, localdict)
except FileNotFoundError:
pass
return localdict
for key, value in _read_overrides('config.py').items():
globals()[key] = value
然后在import
之后,print(settings.USERNAME)
将显示:
real-user
另请注意,config.py
覆盖文件可以命名为任何内容(它不需要.py
扩展名。)