Python 将不同文件中的列表合并到超级列表中

Python 将不同文件中的列表合并到超级列表中,python,django,Python,Django,我在一个模块中有许多不同的python文件。每个文件都有自己的列表,比如my_list=[] module __init__.py A.py # my_list = [1] B.py # my_list = [2] C.py # my_list = [3] D.py # my_list = [4] .. 我想以编程方式合并所有文件中的列表,并创建一个超级列表[1,2,3,4] 这是我试过的 import importlib module = importlib.import_mod

我在一个模块中有许多不同的python文件。每个文件都有自己的列表,比如my_list=[]

module
 __init__.py
 A.py # my_list = [1]
 B.py # my_list = [2]
 C.py # my_list = [3]
 D.py # my_list = [4]
 ..
我想以编程方式合并所有文件中的列表,并创建一个超级列表[1,2,3,4]

这是我试过的

import importlib
module = importlib.import_module('module')
super_list = []
for file in ['A', 'B', 'C', 'D']:
  super_list += getattr(module, file).my_list
这似乎奏效了。我遇到的问题是,我需要在
模块中添加导入A、B、C、D


在python中有没有更好的方法来做同样的事情。

我会在
模块中尝试。
中有一个模块名列表,这是允许
从模块导入*
和裸代码导入和扩展超级列表的标准行为,例如:

# module.__init__
import importlib
__all__ = ['A', 'B', 'C', 'D'] # List of what to import for from module import *
super_list = []
for sub in __all__:
    try:
       m = importlib.import_module(sub)
       super_list.extend(getattr(m, 'my_list'))
    except ImportError:
       pass # Ignore any import errors
__all__.append('super_list') # Add to the import * list
如果您不希望允许模块导入*
中的
,请在模块列表中使用
\uuuuu all\uuuu
以外的名称

这会将特定于模块的行为放在它所属的模块中,而不是放在碰巧导入它的任何代码中。您可能会使用
glob
来填充
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu


以上是未经测试的代码

我会在
模块中尝试。在
\uuuuuu all\uuuuu
中有一个模块名称列表,这是允许
从模块导入*
和裸代码导入和扩展超级列表的标准行为,例如:

# module.__init__
import importlib
__all__ = ['A', 'B', 'C', 'D'] # List of what to import for from module import *
super_list = []
for sub in __all__:
    try:
       m = importlib.import_module(sub)
       super_list.extend(getattr(m, 'my_list'))
    except ImportError:
       pass # Ignore any import errors
__all__.append('super_list') # Add to the import * list
如果您不希望允许模块导入*
中的
,请在模块列表中使用
\uuuuu all\uuuu
以外的名称

这会将特定于模块的行为放在它所属的模块中,而不是放在碰巧导入它的任何代码中。您可能会使用
glob
来填充
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu


以上是未经测试的代码

super_list+=importlib.import_模块('module.'+文件)。我的_列表
感谢@AshwiniChaudhary
super_list+=importlib.import_模块('module.+文件)。我的_列表
感谢@AshwiniChaudhary