coding=utf-8
#导入csv包
#python版本为2.7
import csv

#保存文件夹名
logic_control=["achievement","adminBase","announcement","arean","equip","exocism","gamer","gateway","god","guild","hero","item","LB","MAIL","PVE","resource","store","TASK","trial","welfare","worldboss"]

#保存文件名
tps_name=["100_TPS.csv","200_TPS.csv","300_TPS.csv","400_TPS.csv"]

#获取文件下的所有文件
for logic in logic_control:
for tpsname in tps_name:
#保存文件路径
tps_path="C:\\Users\\wan\\Desktop\\TPS_Aggregate\\" + logic +"\\" + tpsname
#保存期望结果路径
avg_tps_path="C:\\Users\\wan\\Desktop\\TPS_Aggregate\\" + logic +"\\" +"AVG_"+ tpsname
print tps_path
print avg_tps_path
tps=file(tps_path,"rb")
tps_avg=file(avg_tps_path,"wb")
#创建写的文件句柄
writer=csv.writer(tps_avg)

#创建读的文件句柄
reader=csv.reader(tps)

#创建一个数组,用来保存CSV文件的数字部分
number=[]

#给期望的csv添加头部信息
writer.writerow(["Interface Name","AVG TPS","MAX TPS"])

#获取原csv文件的每一行数据
for line in reader:
#获取每行数据除去第一元素外的所有元素
for nu in line[1:len(line)-1]:
#把list中为空的元素去掉
if nu!='':
#把数字元素转换为整形并加入number数组
number.append(float(nu))

#把数组number的最大值赋给bigd
bigd=max(number)
tps_sum=sum(number)

#求平均值
avg_tps=tps_sum/len(number)

#打印接口名称和最大TPS
print line[0],avg_tps,bigd

#清空数组中的元素,还原到初始化状态
number=[]

#把接口名称和最大tps保存到期望结果的CSV文件中
writer.writerow([line[0],avg_tps,bigd])

#关闭CSV文件,注意关闭顺序
tps.close()
tps_avg.close()

'''
#获取原CSV文件,并给文件赋予读的权限
#我尝试用相对路径出错,我用的绝对路径
tps=file('C:\\Users\\wan\\Desktop\\TPS_Aggregate\\achievement\\400_TPS.csv',"rb")

#创建一个保存期望结果的CSV文件,并给文件赋予写的权限
#我尝试用相对路径出错,我用的绝对路径
tps_avg=file('C:\\Users\\wan\\Desktop\\TPS_Aggregate\\achievement\\AVG_400_TPS.csv',"wb")

'''


我创建该脚本的目的是用来处理jmeter中TPS的csv文件,来获取TPS文件中每个接口的最大TPS值:

但做这个要对导出的csv文件进行处理,以下是我处理步骤:

首先,导出CSV文件并命名

其次,用excel打开,我不需要时间列,我把时间列删除,选择所有接口和tps所在的域

第三,把选取的域在新的sheet中进行粘贴,选择转置,然后保存

最后就可用脚本对该文件操作了