星期四, 10月 19, 2017

檢查 module 裡是否有指定的 module

好饒舌。
只是因為程式目錄下有好幾個 module ,想檢查裏面是否有指定名稱的子 module,有的話就載入,沒有的話就跳過。
在網路上找了一下,說是用 imp 就可以解決了:
程式如下:
# -*- coding: utf-8 -*-
# 依序去 module1, module2, module3, module4 看有沒有 routing,有的話就載入並取出指定的變數。
import imp


channel_routing = []
apps = ['module1', 'module2', 'module3', 'module4']
for app in apps:
    try:
        app_info = imp.find_module(app)
        module = imp.load_module(app, *app_info)
        routing_info = imp.find_module('routing', module.__path__)
        routing = imp.load_module('routing', *routing_info)
        if hasattr(routing, 'channel_routing'):
            channel_routing.extend(getattr(routing, 'channel_routing'))
    except ImportError:
        pass
其實應該再參考 django autodiscover() 或是 django test runner 原始碼的,只是在那個時間點沒想到。

沒有留言: