包含回退数据的.py配置文件?

2024-04-26 13:19:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我的项目中有一个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末尾包含这个文件?你知道吗

我用的是python3


Tags: 文件oftheto项目用户pyconfig
1条回答
网友
1楼 · 发布于 2024-04-26 13:19:21

我假设从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扩展名)。你知道吗

相关问题 更多 >