2012-03-19 9 views
1

私は、ログファイルを開き、特定の情報を新しい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) 

は今、それは各行の終わりに時間を追加し、しかし、フォーマットがオリジナルとは全く異なっており、それはそれぞれの文字、スペース、文字と番号の間にコンマのが追加されます。一時ファイルの元のフォーマットを維持する方法や、新しいものを作成せずにオリジナルの一時ファイルに時間を追加する方法はありますか?

ありがとうございました!

答えて

0

rowが返されます。csv.readerが返されます。 final_file.write('%s, %s' % (row,total_value) + '\n')
あなたが書いている:(のreprカンマ区切りである)

  • 時間差
  • 新しいライン
  • リスト

    1. をしかし、あなたはそれのすべてを行うことができますワンステップで使用する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

    関連する問題