假设我有一个名为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的dict?
感谢。
答案 0 :(得分:3)
为什么不命名dict说settings
而不是从settings.py导入它。
<强> settings.py 强>
settings = {} # fill with your data
像这样使用
>>> from settings import settings
>>> print settings
{}
替代解决方案是在设置模块级别添加变量并直接使用它们,为什么需要dict? e.g。
<强> settings.py 强>
translate_tabs_to_spaces = True
# more settings
像这样使用
>>> import settings
>>> settings.translate_tabs_to_spaces
True
答案 1 :(得分: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()
将不适合,它无法处理椭圆。目前尚不清楚这是否是他的意思,这仍然是对所提问题的一个很好的答案。
事实证明提问者正在谈论三重引用的字符串,这些字符串正确处理。
答案 2 :(得分:1)
在设置模块中为设置输入名称,然后将设置模块导入模块并将其加载到变量中,如
import settings
your_settings = settings.settings_dict