【m.78360.net - 其它综合】
因为有 “用户上传脚本,动态运行”的需求,所以要动态地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这个类,用来测试的
python动态import某个文件夹下的模块,布布扣,bubuko.com
python动态import某个文件夹下的模块
原文地址:http://blog.csdn.net/xyz5354/article/details/38560373