作者StubbornLin (Victor)
看板Python
标题Re: [问题] import的问题,不应该是问题的问题
时间Tue Apr 22 15:07:34 2008
※ 引述《Lucemia (生の直感、死の予感)》之铭言:
: 借这个标题一问
: 如果我要将一个资料夹下所有定义的类别(分散在各档案中)
: 全部再程式中import进来并列出
: 有什麽好方法吗?
: 现在试过的方式有这些:
: 1. import 资料夹名後 使用dir :
: 但只会产生 __buildins__, __doc__ .. 不会将其下的档案列出
: 2. 使用listdir将资料夹下的档案列出後一一execfile:
: import 路径不同会产生 这些档案找不到需要import 的其他档案
: 3. 使用listdir列出後 在使用 __import__的方式一一载入:
: 目前唯一可行的方式..
def LoadWidgets(self):
"""Import widgets form file"""
import sys, os
try:
import os
import dircache
import blockarticle
WidgetPath = os.path.split(blockarticle.__file__)[0]
DirList = dircache.listdir(WidgetPath + '/widgets')
for FileName in DirList:
#exec 'import %s' % Module
Name, Suffix = FileName.split('.')
if Name != '__init__' and Suffix == 'py':
#print 'blockarticle.widgets.' + Name
BlockArticle = __import__('blockarticle.widgets.' + Name)
Widgets = getattr(BlockArticle, 'widgets')
self.ModuleList[Name] = getattr(Widgets, Name)
我在我BlockArticle就是用第三种方法写的
这样做是要让Widget可以放在某个资料夹
程式会自己去读,要扩充就很方便,不用设定
直接丢进去就ok了
参考看看
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.170.0.222
1F:推 Lucemia:感谢.. 我要做的就是这样子 04/23 10:12