我一直在一个项目中创建自己的.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存储在文件夹中时如何打开它?感谢您的帮助:)
导入文件时,您不能引用路径目录。相反,您想将目录添加到path
,然后导入模块的名称。
import sys
sys.path.append( "Buttons" )
__import__("Btn"+str(self.IntBtnId))
请参阅this so question以获取更多信息。
您的代码中有一些很奇怪的事情,可能是造成问题的原因。首先,通常最好使用os.path
中的函数来操纵文件的路径。从您的反斜杠用法来看,您似乎正在使用Windows,但是os.path
模块可确保所有平台上的行为一致。
也有os.path
,通常推荐使用importlib.import_module
。此外,如果要在程序的生存期内多次加载生成的模块,则必须使用importlib.import_module
明确地执行此操作。
最后一个提示:我会把模块路径排除在外,以避免不得不在多个地方进行更改。
__import__
函数的第一个参数是模块的名称,而不是其路径。因此,我认为您需要使用: