如何将字典写入已存在且已包含标题的csv文件?

时间:2018-06-21 03:54:49

标签: python csv dictionary

我还是python的新手,所以请原谅我的无知。我有一个CSV文件,它已经在第一行中包含标题:column_1column_2column_3。我有一本字典,将各列的名称映射到它们各自的整数,我想将此字典写到CSV文件中,而整数将出现在下一行中。但是,1总是在column_3的末尾附加,例如column_31,并且23出现在{{ 1}}。

column_3

我以前已经编写了文本文件,已经阅读了CSV文件,并且还“打开”了不存在的CSV文件并为它们编写了字典,但是由于某些原因,将字典写到现有CSV文件中却使我不胜其烦。

上面,我没有创建标题,因为它们已经存在。我编写了bigdict = {'column_1':1,'column_2':2,'column_3':3} f = path with open(f,'a+') as csv_file: fieldnames = ['column_1','column_2','column_3'] writer = csv.DictWriter(csv_file, fieldnames=fieldnames,delimiter=',') csv_file.readline() writer.writerow(bigdict) ,以便脚本可以读取第二行,而不是稍后将字典写入第一行。出于某种原因,当我最终调用csv_file.readline()时,它正在写附加在第一行末尾的字典值,如上所述。

我在这里做什么错了?

我遵循下面的Rakesh方法,并且出现以下错误:

.writerow

1 个答案:

答案 0 :(得分:1)

希望我正确理解了您的问题,我认为问题是您的csv文件在最后一行的末尾没有换行符。因此,在进行下一步并添加新行之前,我将首先进行检查。

我从这个名为bigcsv.csv的简单csv文件开始,该文件与脚本位于同一目录中。最初的内容是:

column_1,column_2,column_3
a, b, c

这是代码:

import os
import csv

dir_path = os.getcwd()
file_path = os.path.join(dir_path, "bigcsv.csv")


bigdict = {'column_1': 1, 'column_2': 2, 'column_3': 3}

with open(file_path, 'a+') as csv_file:
    fieldnames = ['column_1', 'column_2', 'column_3']
    writer = csv.DictWriter(csv_file, fieldnames=fieldnames, delimiter=',')
    if '\n' not in csv_file.readlines()[-1]:
        csv_file.write("\n")
    writer.writerow(bigdict)

这是我运行脚本后的文件。

column_1,column_2,column_3
a, b, c
1,2,3

希望有帮助。