0
我想在csv文件中存储一些数据。我能够存储数据,但它看起来像这样用python存储csv头文件数据
1901,1909,1911,1913,1917
5,5,5,4,6
第一行是年份名称,第二行是值。 我的代码如下
import os
import csv
from collections import Counter
from csv import reader
def read_data(filename):
year = 3
with open(filename) as f:
next(f, None) # discard header
year2rel = Counter(int(line[YEAR]) for line in reader(f))
return year2rel
file_exists = os.path.isfile('mycsvfile.csv')
def store_data(value):
my_dict = read_data(filename)
print 'my_dict: ', my_dict
with open('mycsvfile.csv', 'wb') as f:
w = csv.DictWriter(f, my_dict.keys())
if not file_exists:
w.writeheader()
print 'w: ', w
w.writerow(my_dict)
if __name__ == '__main__':
filename = '/home/rob/songs_detail.csv'
a = read_songs(filename)
b = store_data(a)
,但我想包括头,使它看起来像
year values
1901 5
1909 5
1911 5
1913 4
1917 6
我试图改变我的代码,但它不为我工作得很好。我尝试了下面的东西,但没有成功。感谢您的任何提示或帮助。
def store_data(value):
file_exists = os.path.isfile('mycsvfile.csv')
my_dict = read_data(filename)
print 'my_dict: ', my_dict
with open('mycsvfile.csv', 'wb') as csvfile:
headers = ['year', 'values']
writer = csv.DictWriter(csvfile, delimiter=',', lineterminator='\n',fieldnames=headers)
if not file_exists:
writer.writeheader() # file doesn't exist yet, write a header
writer.writerow({'year': my_dict[0], 'values': my_dict[1]})
这会给我下面的错误。
'ValueError: dict contains fields not in fieldnames: 'values', 'year'
'
'delimiter =',''会在你的文件中输入逗号,你似乎需要空格。 –
你不追加到文件中,所以如果它已经存在,它就会被清除,并且你不写新的标题。 –
@ Jean-FrançoisFabre然后我应该用什么来代替delimiter =',' – rob