2016-04-28 45 views
0

我有一个字典文件,我想加载到一个csv文件,其中键是我的列,并且每次新数据读入时,值都会继续追加到新行。 我的代码:python将字典数据加载到csv文件

with open ('master_result.csv','r+b')as csvFile: 
    header = next(csv.reader(csvFile)) 
    dict_writer = csv.DictWriter(csvFile,header, 0) 
    dict_writer.writerow(dict1) 

,但我得到

header = next(csv.reader(csvFile) 
StopIteration 

我无法找到问题。

+0

确定'master_result。 csv'不是空的? – alecxe

+2

你为什么在同一个文件中读写?程序启动之前,文件包含什么内容?什么时候结束? –

回答

0

由于您的迭代(即您的文件)中没有其他值,因此您的程序将抛出StopIteration错误。你能解决这个

一种方式是通过实施一些error handling

with open ('master_result.csv','r+b') as csvFile: 
    try: 
     # check if the necessary headers exist in your 
     # csvFile already. 
     header = next(csv.reader(csvFile)) 
     dict_writer = csv.DictWriter(csvFile, header) 
     dict_writer.writerow(dict1) 
    except StopIteration: 
     # If the headers don't already exist, 
     # use the keys of Dict1 to establish them. 
     header = dict1.keys() 
     dict_writer = csv.DictWriter(csvFile, header) 
     dict_writer.writeheader() 
     dict_writer.writerow(dict1) 

# 'master_result.csv' output if dict1 = {key1: value1, key2: value2, key3: value3}: 
# key1 key2 key3 
# value1 value2 value3 

你也可以换你with块与for遍历多个词典(例如,类型的字典清单)进行迭代,并包括所有的输出文件中的值。这只是一个猜测,但我认为这是你的意思是什么:

...和值将保持每次在新的数据读取附加到新行