如何从含未知文件名的Python文件夹中导入所有文件内容?
实现批量导入文件夹内所有Python文件内容的方法
第一步:把文件夹变成Python包
首先,你需要在目标文件夹(比如你说的folder)里新建一个__init__.py文件——这是Python识别“包”的必备标志,没有它就没法按包的规则导入内容。
第二步:在__init__.py里写自动导入代码
把下面的代码复制到__init__.py中,它会自动遍历文件夹里所有.py文件,排除自身后导入每个文件的所有非私有内容:
import os import sys # 获取当前文件夹的路径 current_dir = os.path.dirname(__file__) # 把当前文件夹加入Python的模块搜索路径 sys.path.append(current_dir) # 遍历文件夹内所有文件 for filename in os.listdir(current_dir): # 只处理.py文件,跳过__init__.py本身 if filename.endswith('.py') and filename != '__init__.py': # 去掉文件名的.py后缀,得到模块名 module_name = filename[:-3] # 动态导入该模块 module = __import__(module_name) # 将模块里的非私有内容导入到当前包的命名空间 for attr in dir(module): if not attr.startswith('_'): globals()[attr] = getattr(module, attr)
第三步:直接使用导入
现在你在项目的其他Python文件里,只需要一行代码就能实现你想要的效果:
from folder import *
这就等价于先导入folder里的所有文件,再从每个文件导入所有非私有内容。
注意事项
- 如果不同文件里有同名的变量、函数或类,后导入的会覆盖先导入的,开发时要留意命名冲突问题
- 这种方式适合小型项目或快速原型开发,大型项目不建议这么用,会降低代码的可读性和维护性
内容的提问来源于stack exchange,提问作者Harshit singh
相关产品推荐
相关产品推荐

