从另一个目录动态导入文件

时间:2019-08-20 03:14:05

标签: python-3.x import

我的输入是文件名列表(作为变量列表),我知道这些文件的路径。每个文件都有一个称为“测试”的功能,我必须从每个文件中调用“测试”功能。该路径不是我的工作目录。我需要能够动态导入这些文件。

我尝试使用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'

如何使用文件名和路径(都存储在变量中)在文件中执行功能?

2 个答案:

答案 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)