Package PyFoam :: Package Basics :: Module CSVCollection
[hide private]
[frames] | no frames]

Source Code for Module PyFoam.Basics.CSVCollection

 1  #  ICE Revision: $Id: $  
 2  """ 
 3  Collects data and writes it to a CSV-file 
 4  """ 
 5   
 6  import csv 
 7   
8 -class CSVCollection(object):
9 """ 10 Collects data like a dictionary. Writes it to a line in a CSV-file. 11 If the dictionary is extended the whole file is rewritten 12 """
13 - def __init__(self,name):
14 """@param name: name of the file""" 15 self.name=name 16 self.headers=[] 17 self.headerDict={} 18 self.data=[self.headerDict] 19 self.current={} 20 self.file=None 21 self.writer=None 22 self.renew=True
23
24 - def __setitem__(self,key,value):
25 """Sets a value in the current dataset 26 @param key: the key 27 @param value: and it's value""" 28 29 if not key in self.headers: 30 self.headers.append(key) 31 self.renew=True 32 self.headerDict[key]=key 33 34 self.current[key]=value
35
36 - def write(self):
37 """Writes a line to disk and starts a new one""" 38 39 self.data.append(self.current) 40 if self.renew: 41 if self.file!=None: 42 self.file.close() 43 self.file=file(self.name,"w") 44 self.writer=csv.DictWriter(self.file,self.headers) 45 self.writer.writerows(self.data) 46 self.renew=False 47 else: 48 self.writer.writerow(self.current) 49 self.current={} 50 self.file.flush()
51
52 - def clear(self):
53 """Resets the last line""" 54 self.current={}
55