dan*_*ast 5 python dictionary namespaces module python-3.x
我想执行以下操作(python3):
在模块中settings.py:
message = 'Hello'
在模块中__main__.py:
from . import settings
def dict_from_module(module):
    ...
    return d
print(dict_from_module(settings))
运行它应该产生:
{'message': 'hello'}
是否有将模块转换为字典的规范方法?
使用vars(settings)提供了大量内部信息:
{   
    '__builtins__': {
        ...
    },
    '__cached__': 'xxx/__pycache__/settings.cpython-34.pyc',
    '__doc__': None,
    '__file__': 'xxx/settings.py',
    '__loader__': <_frozen_importlib.SourceFileLoader object at 0x7f87fc192518>,
    '__name__': 'xxx.settings',
    '__package__': 'xxx',
    '__spec__': ModuleSpec(...),
    'message': 'bye'
}
我不想要/不需要的。我可以将其过滤掉(通过删除以开头的键__),但是如果可以接受的话,我想避免乱搞。
小智 5
希望这可以帮助!
def dict_from_module(module):
    context = {}
    for setting in dir(module):
        # you can write your filter here
        if setting.islower() and setting.isalpha():
            context[setting] = getattr(module, setting)
    return context
| 归档时间: | 
 | 
| 查看次数: | 2348 次 | 
| 最近记录: |