2012-03-19 2 views
1

나는 로그 파일을 열고 특정 정보를 새로운 CSV 파일에 쓰고 그 안에있는 각 동작 사이의 시간차를 비교합니다. 로그 파일. 내가 겪고있는 문제는 첫 번째 작성 과정에서 닫힌 후에 새로운 CSV 파일에 시간차를 추가하는 방법을 찾아야한다는 것입니다. 이것은 내가 지금까지 그 부분을 가지고 있습니다.형식을 바꾸지 않고 CSV 파일에 행 추가하기 (파이썬)

final_file = open('FinalLogFile.csv', 'w') 
temp_logfile = csv.reader(open('tempLogFile.csv', 'rb'), delimiter="\t") 

fmt = '%Y-%m-%d %H:%M:%S.%f' 
row_count = 0 

#find the time between each action and write it to the new file 
#transfer actions from temp file to final file 
for row in temp_logfile: 
    time = (row[0] + " " + row[1]) 
    timestamp = strptime(time, fmt) 
    current_value = mktime(timestamp) 

    row_count+=1 
    if row_count == 1: 
     previous_value = current_value 

    #print ("%s - %s" %(current_value, previous_value)) 
    total_value = current_value - previous_value 

    final_file.write('%s, %s' %(row,total_value) + '\n') 

    previous_value = current_value 
final_file.close() 

#remove the temp logfile 
rm_command = "rm ~/log_parsing/tempLogFile.csv" 
os.system(rm_command) 

이 지금은 각 행의 끝에서 시간을 추가하지 않습니다, 그러나, 형식은 원본과 완전히 다른이며 각 문자, 공간, 문자 및 숫자 사이에 쉼표의를 추가합니다. 임시 파일의 원래 형식을 유지하거나 새 파일을 만들지 않고 원래 임시 파일에 시간을 추가하는 방법이 있습니까?

도움 주셔서 감사합니다.

답변

0

rowcsv.reader이 반환합니다. final_file.write('%s, %s' % (row,total_value) + '\n')
당신이 쓰고있어 :

  1. (누구를 repr 쉼표로 구분이다) 목록을
  2. 시간 차이
  3. 새로운 라인

그러나 당신은이 모든 작업을 수행 할 수 있습니다 한 단계에서 csv.writer을 사용하여 :

final_file = csv.writer(open('FinalLogFile.csv', 'wb'), delimiter="\t") 
... 
    row.append(total_value) 
    final_file.writerow(row) 
... 
+0

빠른 답변 응답! 방금 당신의 제안을 시도하고 "_csv.Error : sequence expected"이 오류가 발생했습니다. – user1186173

+0

@ user1186173 : 제 잘못입니다. '.append()'는리스트 자체가 아닌'None'을 반환합니다. 예를 업데이트했습니다. – bernie

+0

확실히 더 효과적 이었지만 지금은 실제로 다음 라인으로 넘어 가지 않습니다. – user1186173

관련 문제