我的输入是文件名列表(作为变量列表),我知道这些文件的路径。每个文件都有一个称为“测试”的功能,我必须从每个文件中调用“测试”功能。该路径不是我的工作目录。我需要能够动态导入这些文件。
我尝试使用importlib,但是出现以下错误:
import importlib
importlib.import_module("..\..\foo", package=None)
TypeError: the 'package' argument is required to perform a relative import for '..\\..\\x0coo'
importlib.import_module("C:\Users\Desktop\foo", package=None)
ModuleNotFoundError: No module named 'C:\\Users\\Desktop\\foo'
如何使用文件名和路径(都存储在变量中)在文件中执行功能?
答案 0 :(得分:0)
我需要查看更多代码,但我的第一个猜测是您需要在目录字符串中用/替换\,因为\会从字符串中逸出。
答案 1 :(得分:0)
我不确定这是最好的方法,但是我首先添加了 sys.path的模块:
>>import sys
>>sys.path.append('/path/to/module')
>>mod=importlib.import_module('my_module_name')
然后您可以像这样在该模块中调用函数
>>mod.myfunc(myargs)
或者,如果函数名称包含在像func ='myfunctionname'这样的python字符串中 你可以这样称呼
>>mod.__dict__[func](args)