我想将不同的列及其值写入单个CSV文件中, 但它压倒了以前的路线。我的代码是,
import csv
onlyKeys=['date']
def samp(date,field):
onlyKeys.append(field)
myFile = open('fulltest.csv', 'wb')
with myFile:
writer1 = csv.DictWriter(myFile, fieldnames=onlyKeys)
writer1.writeheader()
writer1.writerow({'date' : date, field: 1})
print('row written')
myFile.close()
samp('jan 10 2018 23:34:55','Video Error1')
samp('jan 10 2018 23:34:56','Video Error2')
samp('jan 10 2018 23:34:57','Video Error3')
我的预期输出是
date,Video Error1,Video Error2,Video Error3
jan 10 2018 23:34:55,1,0,0
jan 10 2018 23:34:56,0,1,0
jan 10 2018 23:34:57,0,0,1
但我得到的是,
date,Video Error1,Video Error2,Video Error3
jan 10 2018 23:34:57,,,1
如何在单独的行上写每一行。感谢
答案 0 :(得分:0)
以模式'wb'
打开文件,首先销毁文件中的所有数据。您想要的是追加新数据到现有数据,因此您应该以{{1}}模式打开文件。顺便说一下,我不认为DictReader / DictWriter需要二进制文件。所以你可以简单地使用模式'ab'
为避免多个标题行,'a'
命令也应移到writeheader()
函数之外。但这意味着在开始调用函数samp
最后评论:当您在CSV文件中写入一行时,只输出两个字段:samp
和当前date
。因此,您不能在未使用的字段中获得0(如您预期的输出中所示),而是空字段。但是我猜这对于你的其余处理来说应该是一个问题