Python 脚本未将列表的最后一个元素记录到csv文件中

Python 脚本未将列表的最后一个元素记录到csv文件中,python,python-3.x,Python,Python 3.x,我有一个Python类(TimeTesting),里面有3个方法- TimeTest1-获取当前时间并引入1秒睡眠 TimeTest2-获取当前时间,并计算在TimeTest1中获取的时间与在函数TimeTest2中获取的时间之间的差 LogOperation将操作记录到csv文件中,文件头为IterationNumber、T1Value、T2Value和时差 我在一个循环中运行所有三个函数10次。但是最后一次迭代(即第10次迭代)没有被捕获到日志文件中。 下面是我的代码 import date

我有一个Python类(
TimeTesting
),里面有3个方法-

  • TimeTest1
    -获取当前时间并引入1秒睡眠
  • TimeTest2
    -获取当前时间,并计算在
    TimeTest1
    中获取的时间与在函数
    TimeTest2
    中获取的时间之间的差
  • LogOperation
    将操作记录到csv文件中,文件头为
    IterationNumber
    T1Value
    T2Value
    时差
  • 我在一个循环中运行所有三个函数10次。但是最后一次迭代(即第10次迭代)没有被捕获到日志文件中。 下面是我的代码

    import datetime
    from datetime import timedelta
    import time
    import csv
    import collections
    
    MyVar1 = range(1,11)
    DataList = []
    
    class TimeTesting:
        def TimeTest1(self):
            self.T1 = datetime.datetime.now()
            time.sleep(1)
            self.LogFileHeader = ['IterationNumber', 'T1Value', 'T2Value', 'TimeDifference']
            print('TimeTest1 function called')
    
        def TimeTest2(self):
            self.T2 = datetime.datetime.now()
            self.TimeDiff = self.T2 - self.T1
            print('Timetest2 function called')
    
        #Log operation function
        def LogOperation(self, Var1):        
            with open('LogFile.csv', 'w') as LogList:
                write = csv.writer(LogList, delimiter = "|", lineterminator = "\n") 
            
                #Extracting the header from the log file
                with open('LogFile.csv', 'r') as ReadLogFile:
                    reader = csv.DictReader(ReadLogFile)
                    fieldnames = reader.fieldnames
                    FileHeaderStringFormat = str(fieldnames)
    
                #Converting the header from the TimeTest1 function
                TempResult1 = str(self.LogFileHeader)
                LogHeaderStringFormat = TempResult1.replace("', '", "|")
    
                #Comparing FileHeaderStringFormat and LogHeaderStringFormat
                a = set(FileHeaderStringFormat)
                b = set(LogHeaderStringFormat)  
      
                if collections.Counter(a) == collections.Counter(b):
                    write.writerows(DataList)
                    DataList.append((Var1, self.T1, self.T2, self.TimeDiff))
                else:
                    write.writerow(self.LogFileHeader)
                    write.writerows(DataList)
                    DataList.append((Var1, self.T1, self.T2, self.TimeDiff))
    
    
    ob = TimeTesting()
    
    for item in MyVar1:
        ob.TimeTest1()
        ob.TimeTest2()
        ob.LogOperation(item)
    
    下面是正在生成的日志文件

    这些行

     write.writerow(self.LogFileHeader)
     write.writerows(DataList)
     DataList.append((Var1, self.T1, self.T2, self.TimeDiff))
    
    如果你把它们改写成

     DataList.append((Var1, self.T1, self.T2, self.TimeDiff))
     write.writerow(self.LogFileHeader)
     write.writerows(DataList)
    

    写完行后,您正在添加列表。

    Gosh!我错过了细节。多谢。