2016-11-22 73 views
0

這裏是我的代碼:連續數據附加到使用CSV LIB同一行,在Python

import csv 

with open(outputfile, 'a') as csvfile: 
    filewrite = csv.writer(csvfile, delimiter=',', quoting=csv.QUOTE_MINIMAL) 
    filewrite.writerow([hostname]) 
    if (CiscoSyslog == 0): 
     filewrite.writerow(['Syslog']) 
    if (CiscoSNMP == 0): 
     filewrite.writerow(['SNMP']) 

目前,它在一個新行輸出的數據,因爲它發現它。基本上,最終目標是生成一堆缺少Syslog和/或SNMP配置的主機名的CSV文件。我想它到底看的方式,例如:

router1,Syslog 
router2,SNMP 
router3,Syslog,SNMP 

正如你所看到的,在乞討我有一個文件打開,它打印出主機名,然後,我此刻的目標是:我想保持行「開放」,所以我可以繼續追加更多的數據,因爲「if」語句不斷找到匹配項。最終它會產生類似於我上面顯示的例子。

我試着在這個論壇和其他論壇上進行研究,但我一直在尋找如何附加到CSV中的新行的例子,或者我隨時隨地找人發表評論,CSV庫如何不支持添加新列。

一些幫助將非常感激。謝謝!

回答

0

在編寫代碼之前,您需要完全構建行。試試這個:

import csv 

with open(outputfile, 'a') as csvfile: 
    filewrite = csv.writer(csvfile, delimiter=',', quoting=csv.QUOTE_MINIMAL) 
    row = [hostname] 
    if (CiscoSyslog == 0): 
     row.append('Syslog') 
    if (CiscoSNMP == 0): 
     row.append('SNMP') 
    filewrite.writerow(row) 
+0

非常感謝!這有效,我想要的方式。 – Viktor

+0

如果它適合你,你會介意將這個答案標記爲解決方案嗎? – user3030010

+0

哦,你沒問題,對不起。完成! :) – Viktor

0

cvs.writerow的參數是一個列表,單元格列表。 所以你可以在輸出之前建立這一行,如:

row=[] 
if something: 
    row.append("cell1valA") 
else: 
    row.append("cell1valB") 
row.append("cell2") 
row.append("cell3") 
row.append("cell4") 
filewrite.writerow(row) 
相關問題