我有多个文件,其结构类似于文件example.py:
def initialize(context):
pass
def daj_omacku_teplu(context, data):
pass
def hmataj_pomaly(context, data):
pass
def chvatni_paku(context, data):
pass
def mikaj_laktom(context, data):
pass
Run Code Online (Sandbox Code Playgroud)
我需要能够在不同的 python 文件中从“example.py”动态导入方法,例如:
for fn in os.listdir('.'):
if os.path.isfile(fn):
from fn import mikaj_laktom
mikaj_laktom(example_context, sample_data)
Run Code Online (Sandbox Code Playgroud)
由于多种原因,我无法更改 的结构,example.py因此我需要制定一种机制来加载方法并评估它们。我尝试使用importlib但它只能导入一个类,而不是只定义了方法的文件。谢谢您的帮助。
Pythonimport不支持使用路径导入,因此您需要将文件作为模块访问,请参阅 ( sys.path )。现在假设您的源代码与主脚本位于同一文件夹中,我将使用以下(或类似的):
import sys
def load_module(module):
# module_path = "mypackage.%s" % module
module_path = module
if module_path in sys.modules:
return sys.modules[module_path]
return __import__(module_path, fromlist=[module])
# Main script here... Could be your for loop or anything else
# `m` is a reference to the imported module that contains the functions
m = load_module("example")
m.mikaj_laktom(None, [])
Run Code Online (Sandbox Code Playgroud)
源文件也可以是另一个包的一部分,在这种情况下,您需要__init__.py与文件位于同一文件夹中.py(请参阅包)并使用“mypackage.module”符号导入。(请注意,顶级文件夹应在您的路径中,在上面的示例中,这是包含“mypackage”的文件夹)
UDPATE:
| 归档时间: |
|
| 查看次数: |
10112 次 |
| 最近记录: |