我有多个文件,我想同时读取它们,从每一行中提取一个数字并计算平均值。对于少量的文件,我在itertools模块中使用izip完成了这项工作。这是我的密码。from itertools import izip
import math
g=open("MSDpara_ave_nvt.dat",'w')
with open("sample1/err_msdCECfortran_nvt.dat",'r') as f1, \
open("sample2/err_msdCECfortran_nvt.dat",'r') as f2, \
open("sample3/err_msdCECfortran_nvt.dat",'r') as f3, \
open("err_msdCECfortran_nvt.dat",'r') as f4:
for x,y,z,bg in izip(f1,f2,f3,f4):
args1=x.split()
i1 = float(args1[0])
msd1 = float(args1[1])
args2=y.split()
i2 = float(args2[0])
msd2 = float(args2[1])
args3=z.split()
i3 = float(args3[0])
msd3 = float(args3[1])
args4=bg.split()
i4 = float(args4[0])
msd4 = float(args4[1])
msdave = (msd1 + msd2 + msd3 + msd4)/4.0
print>>g, "%e %e" %(i1, msdave)
f1.close()
f2.close()
f3.close()
f4.close()
g.close()
这个代码工作正常。但如果我想同时处理100个文件,如果我这样做,代码会变得非常冗长。还有其他更简单的方法吗?看起来fileinput模块也可以处理多个文件,但我不知道它是否可以同时处理。
谢谢。