3

假设我有一个名为 settings.py 的文件,其内容如下:

{
    "translate_tabs_to_spaces": True,
    "word_wrap": "true",
    "font_face": "Monaco",
    "font_size": 14.0,
    "highlight_line": True,
    "ignored_packages":
    [
        ""
    ],
    "what": '''
            This is python file, not json
            '''
}

如何将它放入我的主应用程序文件 app.py 中名为 settings 的字典中?

谢谢。

4

3 回答 3

3

为什么不命名该字典settings,而不仅仅是从 settings.py 导入它,例如

设置.py

settings = {} # fill with your data

像这样使用它

>>> from settings import settings
>>> print settings
{}

替代解决方案是在设置模块级别添加变量并直接使用它们,为什么需要字典?例如

设置.py

translate_tabs_to_spaces = True
# more settings

像这样使用它

>>> import settings
>>> settings.translate_tabs_to_spaces
True
于 2012-05-03T21:22:40.883 回答
1

您可以使用它ast.literal_eval()来安全地执行此操作。

import ast

data="""\
{
    "translate_tabs_to_spaces": True,
    "word_wrap": "true",
    "font_face": "Monaco",
    "font_size": 14.0,
    "highlight_line": True,
    "ignored_packages":
    [
        ""
    ],
    "what": '''
            This is python file, not json
            '''
}\
"""

print(ast.literal_eval(data))

给我们:

{'what': '\n            This is python file, not json\n            ', 'font_size': 14.0, 'translate_tabs_to_spaces': True, 'font_face': 'Monaco', 'word_wrap': 'true', 'highlight_line': True, 'ignored_packages': ['']}

编辑:

鉴于提问者的新评论表明他希望能够...在他的配置中使用,这ast.literal_eval()将是不合适的,因为它无法处理省略号。尚不清楚这是否是他的意思,这仍然是对所提出问题的一个很好的回答。

原来提问者正在谈论三重引号字符串,这是正确处理的。

于 2012-05-03T21:21:17.587 回答
1

在设置模块中为设置字典命名,然后将设置模块导入您的模块并将其加载到变量中,例如

import settings
your_settings = settings.settings_dict
于 2012-05-03T21:22:14.027 回答