这可能是一个非常简单的问题,但似乎无法弄清楚或找到有关此问题的任何已回答的问题。
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)不能工作,因为它不是一个字符串?有没有快速解决这个问题?
提前致谢。 保罗
答案 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))