我一直致力于创建自己的.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?谢谢你的帮助:))
答案 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
文件,以表明它是一个模块包。