我想制作一个循环,以函数中的每个文件中的每个函数导入每个函数,并使用输入来运行该函数,我想分别放置文件,以便我可以添加更多它们

现在,我只有1个文件callde quit.py。

def quit():
    raise Exception("bye")

在main.py中我尝试这样做

import os 

commands=[]
for file in os.listdir(r"funcs"):
    if file.endswith(".py"):
        commands.append(file)
        file=file[:-3]
        from funcs import file
        

print(commands)

Importerror:无法从“ funcs”中导入名称为“文件”(未知位置)

分析解答

这并不是无用的,也没有太多的安全性,但是您可以在"sys.path"中添加路径,使用"importlib.util"导入并添加全局变量:

from glob import glob
import sys
import pathlib
import importlib.util

sys.path.append(r".\funcs")
for file in glob(r".\funcs\*.py"):
    file = pathlib.Path(file)
    sys.path.append(file)
    imported_module = importlib.import_module(file.stem)
    globals().update(imported_module.__dict__)