2017-08-18 40 views
1

是否可以使用DictWriter讀取和寫入現有的csv。如果沒有,是否有任何可用的軟件包,可以做到以下幾點:使用DictWriter讀寫csv

CSV:

event_type, flight_number, test_result 
'ETA', '1234','' 

腳本:

testData = csv.DictReader(open('test_data.csv', 'rU')) 

for row in testData: 

    eventType = row['event_type'].strip() 
    flightNumber = row['flight_number'].strip() 
    result = 6 
    row['test_result'] = result 

計算後,我打算寫「test_result」的當前行的列結果的值。

+0

你有沒有考慮閱讀每一行中的文件和輸出寫入新文件? – somil

+0

由於我正在運行測試,因此結果必須位於同一個文件中。如果有任何包可以用excel文件做這樣的事情,我也願意接受。 – jeesan485

回答

0

經過大量修補後,這種方法似乎是最好的,直到我找到更好的方法。

import csv, os 

testData = csv.DictReader(open('test_data.csv', 'rU')) 
rowHeaders = testData.fieldnames 
resultFile = open('result_data.csv', 'w', newline='') 
csvWriter = csv.DictWriter(resultFile, rowHeaders) 
csvWriter.writeheader() 
resultFile.close() 

resultFile = open('result_data.csv', 'a', newline='') 
csvWriter = csv.DictWriter(resultFile, rowHeaders) 

for row in testData: 

    eventType = row['event_type'].strip() 
    flightNumber = row['flight_number'].strip() 
    result = 7 

    csvWriter.writerow({'event_type': eventType, 
         'flight_number': flightNumber, 
         'test_result': result}) 

它創建具有完全相同的數據+附加數據

一個新的文件

輸出result_data.csv:

event_type, flight_number, test_result 
ETA, 1234,7 
ETD, 1034,7 
+0

這是正確的,但是在關閉result_data文件時沒有必要立即以append方式重新打開它:只需將其打開即可:'csvWriter.writeheader()'後面緊接着'for testData:...中的行。 ' –

+0

謝謝你指出。 – jeesan485