一、问题背景
项目的测试过程中,使用csv.writer().writerow()方式保存数据到csv文件中,但是check结果时发现,每写入一次都是会多一个空行,问题现象类似如下:
二、出现问题之前的源码
#!/usr/bin/python
#Author:千里之行
#Update:2020-09-04
#
#
#
#
import os
import sys
import csv
import time
def killProcessStressTest():
with open('D:\\MemTest\\onemoreline.csv','w') as csvfile:
writer = csv.writer(csvfile,dialect ='excel')
writer.writerow(['time','MMSMem(KB)','MMSPid'])
for i in range(loopNumber):
os.system(ipString)
time.sleep(3)
print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())+">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>StressTest LoopNumber is:" + str(i))
mmsMemString = os.popen('adb shell "dumpsys meminfo |grep -e \'com.android.mms \' "')
mmsMemStringSplit = mmsMemString.read().strip().split(' ')
mmsMem = mmsMemStringSplit[0]
mmsPid = mmsMemStringSplit[4][:-3]
#print("mmsMem: "+mmsMem + " ;mmsPid: " +mmsPid)
time.sleep(2)
print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())+ "MMSMem: "+mmsMem + " MMSPid: " + mmsPid )
#依次将关注进程的内存和Pid写入到csv文件中
writer.writerow([time.strftime("%Y-%m-%d %H-%M-%S",time.localtime()),mmsMem,mmsPid])
time.sleep(5)
csvfile.close()
if __name__ == "__main__":
killProcessStressTest()
二、解决方式
后来通过查阅资料,问题很好的解决,只需在with语句中增加一个newline=" 的参数即可,修改前后代码对比如下: