Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如何迭代文件名列表并导入它们?_Python - Fatal编程技术网

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添加到文件夹中,您可以将文件作

假设我有一个名为“Files”的文件夹,其中包含许多不同的python文件

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
模块。是的,这通常是个坏主意。请参阅此处有关包装的文档: