导入文件夹中的python文件

问题描述 投票:0回答:3

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

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存储在文件夹中时如何打开它?感谢您的帮助:)

python file python-import relative-path
3个回答
1
投票

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

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

请参阅this so question以获取更多信息。


2
投票

您的代码中有一些很奇怪的事情,可能是造成问题的原因。首先,通常最好使用os.path中的函数来操纵文件的路径。从您的反斜杠用法来看,您似乎正在使用Windows,但是os.path模块可确保所有平台上的行为一致。

也有os.path,通常推荐使用importlib.import_module。此外,如果要在程序的生存期内多次加载生成的模块,则必须使用importlib.import_module明确地执行此操作。

最后一个提示:我会把模块路径排除在外,以避免不得不在多个地方进行更改。


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.