导入折叠中的Python文件

2024-10-03 06:32:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在做一个项目,创建自己的.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存储在文件夹中时,如何打开它?你知道吗


Tags: 文件项目方法pyimportself文件夹error
3条回答

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

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

您可能还需要在Buttons文件夹中放置一个空的__init__.py文件,以指示它是一个模块包。你知道吗

您的代码中有一些不规则的东西可能是导致问题的原因。首先,通常最好使用^{}中的函数来操纵文件的路径。从反斜杠的用法来看,似乎您正在Windows上工作,但是os.path模块确保了所有平台上行为的一致性。你知道吗

还有^{},通常建议在__import__上使用。此外,如果要在程序的生命周期内多次加载生成的模块,则必须使用imp.reload显式地进行加载。你知道吗

最后一个提示:我会计算出模块路径,以避免在多个地方更改它。你知道吗

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

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

有关详细信息,请参见this so question。你知道吗

相关问题 更多 >