splitting dictionary and writing it to different csv file in python -


i want split python dictionary , write different files based on no_of_lines_per_file , size of dictionary

input

no_of_lines_per_file 

so if no_of_lines_per_file = 2 , size of dictionary 10 want dictionary splitted 5 files(each file have 2 rows)

script

import csv no_of_lines_per_file = 2 s = {"2222":["1","2","3"],"3456":["2","3","4"],"5634":["4","5"],"23543":["456","3"],"29587":["4","5"],"244":["23","34"],"455":["3","4"],"244221":["5"],"23232345":["2323","43"]}  def again(c,h,no_of_lines_per_file1):     f3 = open('num_'+str(h)+'.csv', 'at')     if c == 1:         ceh = 2     else:         ceh = c     print ceh     v = 0     w in s:         v = v + 1         if v < ceh:             pass         elif v > no_of_lines_per_file1:             print "yes"             no_of_lines_per_file1 = no_of_lines_per_file1 + 1             h = no_of_lines_per_file1 + 1             again(c,h,no_of_lines_per_file1)         else:             writer = csv.writer(f3,delimiter = ',', lineterminator='\n',quoting=csv.quote_all)             writer.writerow(s[w])          c = c + 1  def split():     f3 = open('has_'+str(no_of_lines_per_file)+'.csv', 'at')     writer = csv.writer(f3,delimiter = ',', lineterminator='\n',quoting=csv.quote_all)     c = 0     w in s:          if c >= no_of_lines_per_file:              no_of_lines_per_file1 = no_of_lines_per_file + 1             h = no_of_lines_per_file             again(c,h,no_of_lines_per_file1)             break         else:             #print no_of_lines_per_file             writer = csv.writer(f3,delimiter = ',', lineterminator='\n',quoting=csv.quote_all)              writer.writerow(s[w])          c = c + 1  split() 

but script not working , creates many files

in above script no_of_lines_per_file = 2 , size of dictionary s 9

so want 5 files first 4 file contain 2 rows each , fifth file contain 1 row

how can solve problem?

my method flat dict first, split flat dict sub list length want

    import csv     flatdict = [  in s.items()]     splitflatdict = [flatdict[i:i+no_of_lines_per_file] in xrange(0,len(flatdict),no_of_lines_per_file)]     i,rows in enumerate(splitflatdict):       open(str(i) + '.csv','wb') f:         writer = csv.writer(f)         writer.writerows(rows) 

Comments