python动态import某个文件夹下的模块

因为有  “用户上传脚本,动态运行”的需求,所以要动态地import用户上传的模块


所以写了个函数动态地import


# -*- coding: utf-8 -*- 
import os
import sys
import os.path
import Queue
import commands
def test(rootDir):
    #判断传入的路径下是否有“__init__.py”这个文件了,如果没有则创建,否则import会认为没有这个moudle
    if os.path.exists(rootDir):
        arr = rootDir.spliplit("/")
        pathDir = ""
        for path in arr:
            pathDir = pathDir +path+"/"
            if not os.path.exists(pathDir+"/__init__.py"):
                commands.getoutput("touch " +pathDir+"/__init__.py")
    #遍历文件夹找出app_开头的py文件,导入,注意globals,否则作用域只是在这个函数下    
    list_dirs = os.walk(rootDir) 
    for dirName, subdirList, fileList in list_dirs:
        for f in fileList:
            file_name = f
            
            if file_name[0:4] == "app_" and file_name[-3:] == ".py":
                impPath = ""
                if dirName[-1:] != "/":
                    impPath = dirName.replace("/",".")[2:]
                else :
                    impPath = dirName.replace("/",".")[2:-1]
                print dirName,"\n",impPath
                if impPath != "":
                    exe_str = "from " + impPath+"."+file_name[0:-3]+" import * "
                else:
                    exe_str = "from " +file_name[0:-3]+" import *"
                exec(exe_str,globals())
test("./app/inapp/")
a = Printaa()
a.printha()



./app/inapp/
有个app_XXX.py的文件,里面有
Printaa这个类,用来测试的


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值