如何从独立文件夹批量导入多个Python文件到单个Python文件中
存放关卡的文件目录

导入语句代码

如第二张截图所示,当前要导入level_one需要单独编写对应的导入语句。我尝试使用*符号一次性导入level_one、level_two两个关卡文件,就像导入库中所有方法的用法一样,但该方式没有生效。下方截图是我尝试调用写在level_two.py文件中的字典的场景,目前必须额外添加对应导入语句才能正常调用,请问如何实现批量导入?
文件调用位置代码
解决方案
方案1:配置包的__init__.py实现批量导入(适合关卡数量固定的场景)
你需要先在存放所有level_*.py的文件夹下新建一个名为__init__.py的文件,写入以下内容:
# 声明用import *时需要导出的模块 __all__ = ["level_one", "level_two"] # 预先导入所有关卡模块 from . import level_one from . import level_two
配置完成后,你在外部代码里就可以直接用一行语句批量导入所有关卡模块:
from 你的关卡文件夹名 import *
之后直接通过level_one.xxx、level_two.xxx就能调用对应文件里的字典、函数等内容。
方案2:动态批量导入(适合后续会新增大量关卡的场景)
如果后续你会不断新增level_three.py、level_four.py等文件,不想每次新增都手动修改__init__.py,可以用动态导入逻辑自动加载所有符合命名规则的关卡文件:
import os import importlib # 替换为你存放关卡文件的包名,比如你的关卡都放在levels文件夹下就填levels package_name = "levels" # 自动扫描所有符合level_xxx.py命名规则的文件 level_module_names = [ f[:-3] for f in os.listdir(package_name) if f.startswith("level_") and f.endswith(".py") and f != "__init__.py" ] # 动态导入所有关卡模块,存入字典统一管理 levels = {} for module_name in level_module_names: levels[module_name] = importlib.import_module(f"{package_name}.{module_name}") # 调用示例:获取level_two里的字典 target_dict = levels["level_two"].你的字典名
这种方案不需要手动维护导入列表,新增关卡只要文件名符合level_xxx.py的规则,就会被自动导入,扩展性更强。
内容的提问来源于stack exchange,提问作者Xephiss
相关产品推荐
相关产品推荐

