2012-03-19 3 views
1

Я работаю над скриптом python, который открывает файл журнала, записывает определенную информацию в новый файл csv, а затем сравнивает разницу во времени между каждым действием в пределах журнальный файл. Проблема, с которой я сталкиваюсь, заключается в том, что мне нужно определить способ добавления разницы во времени к новому файлу csv после того, как он был закрыт во время первого процесса записи. Это то, что у меня есть для этой части.Добавление строки в файл CSV без изменения его формата (Python)

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) 

Прямо сейчас, он добавляет время в конце каждой строки, однако, форматирование полностью отличается от оригинала, и это добавляет запятую в период между каждой буквой, пробелом, символом и номером. Есть ли способ сохранить исходный формат временного файла или просто добавить время в исходный файл temp без создания нового?

Спасибо за помощь!

ответ

0

Каждый row, возвращенный csv.reader, представляет собой список.
С final_file.write('%s, %s' % (row,total_value) + '\n') вы пишете:

  1. список (которого магнезии разделяются запятыми)
  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

Смежные вопросы