导入文件夹中的python文件

时间:2015-05-08 18:04:53

标签: python file import location relative

我一直致力于创建自己的.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?谢谢你的帮助:))

3 个答案:

答案 0 :(得分:2)

您的代码中有一些可能导致问题的单一内容。首先,通常最好使用os.path中的函数来操作文件路径。从您的反斜杠使用情况来看,您似乎正在使用Windows,但os.path模块可确保在所有平台上保持一致的行为。

此外还有importlib.import_module,通常建议使用__import__。此外,如果您想在程序的生命周期内多次加载生成的模块,则必须使用imp.reload明确地执行此操作。

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

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

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

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