我的python程序循環了一堆csv文件,讀取它們,並將文件中的特定列寫入另一個csv文件。程序運行時,我可以看到正確寫入的文件,但是一旦程序完成,我剛寫入的所有文件都變空了。Python,csv編寫器之後的空文件..再次
解決所有其他類似的線程似乎是關閉你寫的文件正確,但我似乎無法弄清楚我做錯了什麼。任何人?
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)
for i 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)
for i in contents_2:
readpath_3=os.path.join(readpath_2, i)
if os.path.isfile(readpath_3)== True :
savefile=savepath + "\\" + i
savefile = open(savefile, 'wb')
writer = csv.writer(savefile, delimiter=';')
readfile=open(readpath_3, 'rb')
reader = csv.reader(readfile, delimiter=';')
try:
for row in reader:
writer.writerow([row[0], row[3]])
except:
print(i)
finally:
savefile.close()
readfile.close()
你應該使用'try..finally'或者'with'-Statement來獲得乾淨的文件訪問,而不會出現這些問題。 – schlamar
你正在使用哪種操作系統? – Martey
即時通訊使用Windows 7 – Drublic