我用append方法'a'
打开一个csv文件,用DictWriter
(每次调用只写一个新行)作为函数调用的结果。在
keys = ['15000', '15001', '15002', '15003']
values = [18, 20, 3, 9] ##changes each time function run
每次我对函数感兴趣时,值都会改变。键通常保持不变,但当我从XML文件中提取时,将来可能会添加更多的键(与新值相关)。因此,我希望能够一致地将值映射到字段名。在
with open('myfile.csv', 'a') as csvfile:
w = csv.DictWriter(csvfile, fieldnames = keys, lineterminator='\n')
w.writerheader()
w.writerow(dict(zip(fnames, values)))
这里的问题是每次writerheader()
将头写到前一行下。生成的csv如下所示:
我不希望这个标题重复出现。我知道我可以从csv开始,只将初始键作为头,但是如果字典键在以后的函数调用中发生变化,这并不能解决我的问题。另外,如果添加了新的键,是否会一致地将值映射到键?我会遇到麻烦吗?在
{{cd2>添加了一个默认的
听起来好像每次列更改时都需要重写整个CSV文件。在
如果将新列追加到现有键,则当前数据行将需要追加一个空字段。或者,您可能有一些应该添加的默认值,而不是一个空字段。在
因此,您需要用
DictReader
打开现有的CSV文件。获取fieldnames
并附加新列。然后从原始文件中读取每一行,可以选择使用新列的默认值更新字典。然后将其写入一个新文件,其中DictWriter
配置了新的fieldnames
。最后添加新行。在如果字段经常更改,这将是非常低效的。相反,您可能希望在列更改时写入单独的CSV文件,然后在以后执行合并。在
相关问题 更多 >
编程相关推荐