正在导入文件夹中的 Python 个文件

Importing Python files that are in a folder

我一直在开发一个项目,该项目创建自己的 .py 文件来存储方法的处理程序,我一直在尝试弄清楚如何将 Python 文件存储在文件夹中并打开它们.这是我用来创建文件的代码,如果它们尚不存在,然后导入文件:

if os.path.isfile("Btn"+ str(self.ButtonSet[self.IntBtnID].IntPID) +".py") == False:
        TestPy = open("Btn"+ str(self.ButtonSet[self.IntBtnID].IntPID) +".py","w+")
        try:
            TestPy.write(StrHandler)
        except Exception as Error:
            print(Error)
        TestPy.close()
    self.ButtonSet[self.IntBtnID].ImpHandler = __import__("Btn" + str(self.IntBtnID))
    self.IntBtnID += 1

当我更改此行时:

self.ButtonSet[self.IntBtnID].ImpHandler = __import__("Btn" + str(self.IntBtnID))

对此:

self.ButtonSet[self.IntBtnID].ImpHandler = __import__("Buttons\Btn" + str(self.IntBtnID))

找不到填充并最终抛出错误,因为它无法在文件夹中找到文件。

知道为什么它不起作用我只是不知道如何解决这个问题:/

我的问题是如何打开存储在文件夹中的 .py?

您的代码中有一些不合常理的地方可能是导致您出现问题的原因。首先,一般使用os.path中的函数来操作文件路径比较好。从您的反斜杠用法来看,您似乎正在处理 Windows,但 os.path 模块可确保跨所有平台的行为一致。

还有importlib.import_module,通常比__import__更推荐。此外,如果您想在程序的生命周期内多次加载生成的模块,则必须使用 imp.reload.

明确地执行此操作

最后一个提示:我会考虑模块路径以避免必须在多个地方更改它。

导入文件时不能引用路径目录。相反,您想将目录添加到 path,然后导入模块的名称。

import sys
sys.path.append( "Buttons" )
__import__("Btn"+str(self.IntBtnId))

有关详细信息,请参阅 this so question

__import__() 函数的第一个参数是模块的名称,而不是它的路径。因此我认为你需要使用:

self.ButtonSet[self.IntBtnID].ImpHandler = __import__("Buttons.Btn" + str(self.IntBtnID))

您可能还需要在 Buttons 文件夹中放置一个空的 __init__.py 文件,以表明它是一个模块包。