def file_sum_mean(filename):
with open(filename,'r+') as f:
ls = [line.strip().split(',') for line in f] #读取文件内容,形成两层列表嵌套
# 分别把三列数据写进三个列表里,也可以写一个循环,格式化这个过程
ls_height = [int(line[1]) for line in ls[1:]]
ls_weight = [int(line[2]) for line in ls[1:]]
ls_shiliang = [int(line[3]) for line in ls[1:]]
ls_shabiIndex = [int(line[4]) for line in ls[1:]]
# 把上述列表放入一个列表ls_ls里,方便遍历
ls_ls = [ls_height,ls_weight,ls_shiliang,ls_shabiIndex]
#计算sum值,放到一个列表里sum_ls,再合并成一个用逗号分隔,\n结尾的字符串sum_str,方便写入文件
sum_ls = [round(sum(ls)) for ls in ls_ls]
sum_str = ','.join(list(map(str,sum_ls))) + '\n'
#计算mean值,放到一个列表里
mean_ls = [str(round(value/3)) for value in sum_ls]
mean_str = ','.join(mean_ls) + '\n'
#写入文件,注意,先加一个回车,因为原文件最后一行没有回车
f.write('\n')
f.write('Sum,'+ sum_str)
f.write('Mean,' + mean_str)
filename = r'C:/Users/kongy/Desktop/input_file_20190806.csv'
file_sum_mean(filename)
解法二:(与解法一的区别 原行5-12被更改为 新行5-12,此加入了批量生成列表的做法)
def file_sum_mean(filename):
with open(filename,'r+') as f:
ls = [line.strip().split(',') for line in f] #读取文件内容,形成两层列表嵌套
# 分别把三列数据写进三个列表里,用第一行的列名为新列表命名,并将新生成的三个列表放入ls_ls
name_ls = [(index,name) for index,name in enumerate(ls[0])]
#批量赋值列表
ls_ls = []
for i,name in name_ls[1:]:
globals()[name] = [int(line[i]) for line in ls[1:]]
ls_ls.append(globals()[name])
#计算sum值,放到列表sum_ls里,再合并成用逗号分隔,\n结尾的字符串sum_str,方便写入文件
sum_ls = [round(sum(ls)) for ls in ls_ls]
sum_str = ','.join(list(map(str,sum_ls))) + '\n'
#计算mean值,放到列表mean_ls,再合并成用逗号分隔,\n结尾的字符串mean_str,方便写入文件
mean_ls = [str(round(value/3)) for value in sum_ls]
mean_str = ','.join(mean_ls) + '\n'
#写入文件,注意,先加一个回车,因为原文件最后一行没有回车
f.write('\n')
f.write('Sum,'+ sum_str)
f.write('Mean,' + mean_str)
filename = r'C:/Users/kongy/Desktop/input_file_20190806.csv'
file_sum_mean(filename)