5

我想做这个:

from fileName import variableName

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

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

data = [xxxxx]

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

4

1 回答 1

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

希望这可以帮助!

于 2013-11-04T03:02:11.990 回答