我在文件夹(bar0,bar1,bar2...,bar20
)中有一堆文件(foo
)。每个文件都有6000行格式
1 v1
2 v2
3 v3
等。 vi
都是整数
我想查看文件夹中的所有文件,并将数据加载到单个列表中,添加适当位置的值。目前,我正在这样做
for i in range (20):
fin = open('{dir}/ions{i}'.format(dir=self.locDir,i=i)).readlines()[:]
for j in range (len(fin)):
line = fin[j]
words = line.split()
x = int(words[0])
y = int(words[0])
if not x in self.ionDist.X:
self.ionDist.X.append(x)
if len(self.ionDist.Y) == j:
self.ionDist.Y.append(0)
self.ionDist.Y[j] += y
ionDist
是一个简单的类
class dist:
def __init__(self):
self.X = []
self.Y = []
这很慢(我有80个这样的文件夹,每次需要几分钟)。有什么更好的方法呢?
答案 0 :(得分:1)
因为,你不需要self.X,这是我的解决方案:
for i in range(20):
fin = open('{dir}/ions{i}'.format(dir=self.locDir,i=i)).readlines()
y = lambda(x:eval(x.strip().split()[1]),fin)
if len(y) > len(self.Y): self.Y = self.Y + [0]* (len(y) - len(self.Y))
elif len(y) < len(self.Y): y = y + [0]*(len(self.Y) - len(y))
self.Y = [ a+b for (a,b) in zip(self.Y,y)]
如果您的所有文件都有相同的行数,您也可以删除if,elif语句。