[python] 动态import

如何在调用地时候才import所需要的文件?

使用__import__方法

decodeData.py文件中由所需要的类的定义:

class decodeData():
    @staticmethod
    def d():
        print('decodeData')

想在另一个文件test.py中生成这个类,且是在需要的时候才import

# 首先将decodeData.py所在路径加入到系统路径中
import os,sys
base_dir = 'D:/pycharm_proj/0307_django/test'
sys.path.append(base_dir)

name = 'decodeData'

def test(name):
    # 使用__import__方法动态导入
    p = __import__(name,globals(),locals(),level=0)

    print(dir(p))
    globals()[name] = p.__dict__[name]

    instance = eval(name)

    instance.d()

test(name)

结果:

['NamedTemporaryFile', 'TemporaryFile', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'audio', 'audio_file', 'b64encode', 'decodeData', 'fp', 'np', 'os', 'soundfile', 'stream']
decodeData

参考:

多重 import : https://blog.csdn.net/longzhiwen888/article/details/46604265

python import : http://www.runoob.com/python/python-modules.html

循环import:https://www.zhihu.com/question/19887316

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值