gpt4 book ai didi

python - 将文件中的所有变量导入列表

转载 作者:行者123 更新时间:2023-12-03 18:39:51 26 4
gpt4 key购买 nike

有没有办法将文件中的所有变量导入列表?
简化,这正是我想要实现的目标:

  • 我有一个 config.py包含一些像这样的变量的文件,它只包含变量:
    # File: config.py

    NOSCRIPT = True
    TRANSFER_PB = False
    TIMEOUT = 7
    ...
  • 现在我必须从 config.py 导入所有这些变量文件到 process.py , 这样我在运行 process.py 时就可以得到类似的结果
    # File: process.py

    from config import *
    # Stuff to convert all imports into a list
    x = [NOSCRIPT, TRANSFER_PB, TIMEOUT, ...]

  • 我知道使用通配符并不是一个很好的做法,但由于 config.py 中的变量数量巨大,我现在别无选择。 (约 500+)。我也无法编辑配置文件。我可能遗漏了一些明显的东西,但是如果有人可以帮助我解决这个问题,那就太好了。

    最佳答案

    from config import *执行以下步骤:

  • 它进口 config (不与该名称绑定(bind)),
  • 它检查是否 config.__all__存在,
  • 如果存在,请使用这些名称导入对象,
  • 否则,导入不以下划线开头的所有内容。

  • 因此,您可以执行以下操作:
    import config

    if hasattr(config, '__all__'):
    x = [getattr(config, name) for name in config.__all__]
    else:
    x = [getattr(config, name) for name in dir(config) if not name.startswith('_')]
    这只是大致等价的,因为如果 config.py定义 __dir__ 那么这用于 dir(config) 的结果而 from config import *仍然导入所有不以下划线开头的名称,无论 __dir__ .
    注: dir(config 的结果) 按字母顺序排列,即 dir(config) == sorted(dir(config)) .这意味着列表的元素不一定按照它们在原始 config.py 中定义的顺序出现。文件。由于字典从 Python 3.7 开始保留插入顺序,您可以使用 for name in config.__dict__相反,如果这很重要(这也回避了 __dir__ 的区别)。

    关于python - 将文件中的所有变量导入列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63490583/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com