Python, empty file after csv writer.. again -


my python program loops through bunch of csv-files, read them, , write specific columns in file csv file. while program runs, can see files being written in correct manner, once program finished, files i've written become empty.

the solution other similar threads seems closing file write properly, cant seem figure out im doing wrong. anyone?

import os import csv  def ensure_dir(f):     d = os.path.dirname(f)     if not os.path.exists(d):         os.makedirs(d)  readpath = os.path.join("d:\\", "project") savepath=os.path.join("d:\\", "save") ensure_dir(savepath) contents_1=os.listdir(readpath) in contents_1[1:len(contents_1)]:     readpath_2=os.path.join(readpath, i)     if os.path.isdir(readpath_2)== true :         contents_2=os.listdir(readpath_2)         in contents_2:             readpath_3=os.path.join(readpath_2, i)             if os.path.isfile(readpath_3)== true :                 savefile=savepath + "\\" +                 savefile = open(savefile, 'wb')                 writer = csv.writer(savefile, delimiter=';')                 readfile=open(readpath_3, 'rb')                 reader = csv.reader(readfile, delimiter=';')                 try:                     row in reader:                         writer.writerow([row[0], row[3]])                 except:                     print(i)                 finally:                     savefile.close()                     readfile.close() 

savefile=savepath + "\\" + i error. if both "d:\\project\a\x.csv" , "d:\\project\b\x.csv" exist, write savepath + "\\" + i more once. if second path empty "x.csv", overwrite result empty file.

try instead:

import os import csv  def ensure_dir(f):     d = os.path.dirname(f)     if not os.path.exists(d):         os.makedirs(d)  readpath = os.path.join("d:\\", "project") savepath = os.path.join("d:\\", "save")  ensure_dir(savepath)  dname in os.listdir(readpath)[1:]:     readpath_2 = os.path.join(dname, fname)     if not os.path.isdir(readpath_2):         continue     fname in os.listdir(readpath_2)         fullfname = os.path.join(readpath_2, fname)         if not os.path.isfile(fullfname):             continue         savefile = open(savepath + "\\" + dname + "_" + fname, wb)         writer = csv.writer(savefile, delimiter=';')         readfile=open(fullfname, 'rb')         reader = csv.reader(readfile, delimiter=';')         try:             row in reader:                 writer.writerow([row[0], row[3]])         except:             print(i)         finally:             savefile.close()             readfile.close() 

this code improved os.walk


Comments

Popular posts from this blog

objective c - Change font of selected text in UITextView -

php - Accessing POST data in Facebook cavas app -

c# - Getting control value when switching a view as part of a multiview -