Python:如何在多个文件上执行函数并组合结果

时间:2013-10-15 08:35:07

标签: python arrays file function compare

我正在尝试创建一个比较多个文件数据的函数。通过对话窗口(来自GUI平台Tkinter)

选择文件
def compare_datafiles(file_name): 
    data = np.genfromtxt(file_name, dtype=float, delimiter=',', skiprows=(2), usecols=(1,2,3,4,5,6), skip_footer=(3))
    initial = data[0,:]
    final = data[-1,:]
    weightDiff=final-initial  
    data=np.row_stack((data, weightDiff)) 
    totalWD=sum(data[4,:]) # calculate total weight
    distr=np.round((weightDiff/totalWD),2) 
    print distr
    return  distr   

for x in selectedFiles:
        M = compare_datafiles(x)

当我使用两个输入文件运行该函数时,它会打印两个数组:

runfile(r'C:\Users...)
    [ 0.23  0.04  0.1   0.14  0.12  0.38]
    [ 0.22  0.05  0.13  0.16  0.12  0.32]

但只返回其中一个:

M
array([ 0.22,  0.05,  0.13,  0.16,  0.12,  0.32])

如何让它返回两个数组?

1 个答案:

答案 0 :(得分:1)

在你的代码中,你写道:

for x in selectedFiles:
    M = compare_datafiles(x)

您在每个循环上重新分配给M,因此只存储最后一个值。您可以将M列为一个列表并附加到该列表,或使用列表解析:

>>> M = [compare_datafiles(x) for x in selectedFiles]