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
Post a Comment