使用CSV lib在Python中将连续数据附加到同一行

时间:2016-11-22 23:37:02

标签: python csv

这是我的代码:

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

正如你所看到的,在乞讨时我打开了文件并打印出主机名,然后,我目前的目标是:我想保持行#34;打开",所以我可以继续追加更多数据作为" if"声明继续寻找匹配。最终它会产生类似于我上面所示的例子。

我尝试过在这个论坛和其他论坛上进行研究,但我一直在寻找如何在CSV中追加新行的示例,或者我一直在寻找随机人员的评论,以及CSV库如何不支持添加新列。

非常感谢一些帮助。谢谢!

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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)