我还是python的新手,所以请原谅我的无知。我有一个CSV文件,它已经在第一行中包含标题:column_1
,column_2
和column_3
。我有一本字典,将各列的名称映射到它们各自的整数,我想将此字典写到CSV文件中,而整数将出现在下一行中。但是,1
总是在column_3
的末尾附加,例如column_31
,并且2
和3
出现在{{ 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
答案 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
希望有帮助。