python - 将模块转换为字典

标签 python python-3.x dictionary module namespaces

我想执行以下操作(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'
}

我不想要/不需要。我可以过滤掉它(通过删除以 __ 开头的键),但如果有可接受的方法,我想避免乱搞。

最佳答案

希望这对您有所帮助!

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

关于python - 将模块转换为字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35598512/

相关文章:

python - 为什么我从 HoloViews 保存的 Datashader 绘图的分辨率这么低?

python - Django 1.3.7 TemplateDoesNotExist 错误 admin/index.html

python - Django "can' t 在模型中设置属性

python - 在 Python 3.5.1 中使用变量创建文件时出现 FileNotFoundError

python - 比较 Python 字典的方法与某些值类型失败?

dictionary - Golang 创建一片 map

python - 在 Plotly 图中重新排序 Axis

python - 无法在 Xpath 中找到值(元素)

python - 从自己的类调用 iPyWidgets 不显示

python - 如何从给定文件结构的 CSV 文件中读取嵌套字典?