Python:如何迭代文件名列表并导入它们?
假设我有一个名为“Files”的文件夹,其中包含许多不同的python文件Python:如何迭代文件名列表并导入它们?,python,Python,假设我有一个名为“Files”的文件夹,其中包含许多不同的python文件 path = "C:\Python27\Files" os.chdir(path) filelist = os.listdir(path) print(filelist) 这给了我一个列表,其中包含文件夹“files”中所有python文件的名称 我想将这些文件中的每一个作为一个模块导入到一个更大的python程序中,一次导入一个。最好的方法是什么?将\uuuu init\uuuuu.py添加到文件夹中,您可以将文件作
path = "C:\Python27\Files"
os.chdir(path)
filelist = os.listdir(path)
print(filelist)
这给了我一个列表,其中包含文件夹“files”中所有python文件的名称
我想将这些文件中的每一个作为一个模块导入到一个更大的python程序中,一次导入一个。最好的方法是什么?将
\uuuu init\uuuuu.py
添加到文件夹中,您可以将文件作为从文件导入导入*
导入模块的两个功能一起工作,以动态方式导入模块
import imp
import traceback
filelist = [os.path.splitext(x)[0] for x in filelist] # name of the module w/o extension
for f in filelist: # assume files in directory d
fp, pathname, description = imp.find_module( f, [d])
try:
mod = imp.load_module(x, fp, pathname, description)
except:
print(traceback.format_exc())
finally:
# must always close the file handle manually:
if fp:
fp.close()
如果要在运行时导入文件 使用此功能:
def load_modules(filelist):
modules = []
for name in filelist:
if name.endswith(".py"):
name = os.path.splitext(name)[0]
if name.isidentifier() and name not in sys.modules:
try:
module = __import__(name)
modules.append(module)
except (ImportError, SyntaxError) as err:
print(err)
return modules
考虑将文件夹转换为包,否则可以使用
importlib
模块。是的,这通常是个坏主意。请参阅此处有关包装的文档: