1

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

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 是所有“ x's”来自所有“files_*.py's”。如果我是正确的 'files_'+str(i) 不能工作,因为它不是一个字符串?有没有快速解决这个问题的方法?

提前致谢。保罗

4

2 回答 2

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])

importlib在 py2.7 中引入,早期版本使用__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.
...
于 2013-06-15T12:41:53.960 回答
0

据我了解,您正在使用.py文件将列表存储为 python 代码。

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

不过,您应该如何导入具有动态生成名称的模块:

import importlib
i = 1
myModule = importlib.import_module('files_'+str(i))
于 2013-06-15T12:44:08.277 回答