使用python中的for循环从多个文件导入列表

时间:2013-06-15 12:38:29

标签: python for-loop import

这可能是一个非常简单的问题,但似乎无法弄清楚或找到有关此问题的任何已回答的问题。

xcombined=[]
for i in range (1,20):
    from 'files_'+str(i) import x
    for j in range(0,len(x)):
        xcombined.append(x[j])

导致以下错误:

    import "files_"+str(i)
                  ^
SyntaxError: invalid syntax

我希望从files_1.py,files_2.py等导入一个列表(即x = [15.34,...,15.54])并将其附加到另一个名为xcombined的列表中,以便xcombined是所有列表的总和来自所有“文件_ * .py's”的“x”。如果我是正确的'文件_'+ str(i)不能工作,因为它不是一个字符串?有没有快速解决这个问题?

提前致谢。 保罗

2 个答案:

答案 0 :(得分:1)

此处使用importlib模块,因为import语句不适用于字符串。

import importlib
xcombined=[]
for i in range (1,20):
    mod = importlib.import_module('files_'+str(i))
    x = mod.x  # fetch `x` from the imported module
    del mod    # now delete module, so this is equivalent to: `from mod import x`
    for j in range(0,len(x)):
        xcombined.append(x[j])
在py2.7中引入了

importlib,因为早期版本使用__import__

__import__上的帮助:

>>> print __import__.__doc__
__import__(name, globals={}, locals={}, fromlist=[], level=-1) -> module

Import a module. Because this function is meant for use by the Python
interpreter and not for general use it is better to use
importlib.import_module() to programmatically import a module.
...

答案 1 :(得分:0)

根据我的理解,您使用.py文件将列表存储为python代码。

这是非常无效的,可能会导致许多问题。最好使用简单的文本文件(例如JSON格式)。

不过,这里是你应该如何导入动态生成名称的模块:

import importlib
i = 1
myModule = importlib.import_module('files_'+str(i))