如果在运行时之前我不知道文件名,如何从文件导入?

时间:2013-11-04 02:59:17

标签: python python-2.7

我想这样做:

from fileName import variableName

如果我硬编码fileName就没问题了。但我需要使用fileName作为字符串变量,这似乎不起作用。

问题的上下文是我正在尝试创建一个以文件名作为参数的函数。该函数从参数中给出的任何文件中导入variableName,然后返回variableName的值,该值将是一个列表。参数中可能给出的每个文件都只包含一个python语句,如:

data = [xxxxx]

除了内容(xxxx)是几千行之外。只是将一个字符串或一个计算字符串的变量放入“from ...”语句的第二个单词中就不会编译。我还尝试构建一个包含整个语句然后执行eval(字符串)的字符串,但这也给出了“无效语法”。我怎么能这样做呢?文档说'from ...'语句不是编译器指令但是在运行时进行评估,所以我认为这应该有用。

1 个答案:

答案 0 :(得分:3)

使用importlib.import_module功能:

import importlib

fileName = ['a','b','c']
for file in fileName:
    module = importlib.import_module(file)
    data.append(module.variableName)

等于:

from a import variableName
from b import variableName
from c import variableName

希望这有帮助!