如何使用Python将XLS转换为CSV文件?

我正在使用QGIS 2.8.1 python控制台。 我想用python将许多xls文件转换成csv格式。 我的input目录是: D:\PATRICIA\TESTE\XLS ,输出是: D:\PATRICIA\TESTE\CSV2 。 我根据你的build议编写了这段代码(把xls文件转换成Python中的csv / txt文件 ),并用不同的date1999/01/2直到1999/01/31文件开发它: RR_1999_1_2.xlsRR_1999_1_3.xls , … RR_1999_1_31.xls

我不知道为什么我的脚本不起作用。 这意味着什么都没有发生!

我的脚本是

 import xlrd import csv import datetime as dt from datetime import timedelta #initial and final dates data1='19990102' data2='19990131' anoi = int(data1[:4]) mesi = int(data1[4:6]) diai = int(data1[6:8]) anof = int(data2[:4]) mesf = int(data2[4:6]) diaf = int(data2[6:8]) start_date = dt.datetime(anoi, mesi, diai) end_date = dt.datetime(anof, mesf, diaf) total_days = (end_date - start_date).days + 1 for day in xrange(0, total_days): current_date = (start_date + dt.timedelta(days = day)).date() file_date = str(current_date.year)+'_'+str(current_date.month)+'_'+str(current_date.day) srt1='D:/PATRICIA/TESTE/XLS/RR_'+file_date+'.xls' srt2='D:/PATRICIA/TESTE/CSV2/RR_'+file_date+'.csv' def xls_to_csv(): x = xlrd.open_workbook(str1) x1 = x.sheet_by_name('Sheet1') csvfile = open(str2, 'wb') writecsv = csv.writer(csvfile, quoting=csv.QUOTE_ALL) for rownum in xrange(sh.nrows): writecsv.writerow(x1.row_values(rownum)) csvfile.close() 

任何帮助?

谢谢。

除非我错过了一件重要的事情, xls_to_csv在循环中声明函数xls_to_csv ,但不要调用它。 脚本的一般结构应该是:

 #initializations data1='19990102' ... total_days = (end_date - start_date).days + 1 # function definition: def xls_to_csv(str1, str2): x = xlrd.open_workbook(str1) x1 = x.sheet_by_name('Sheet1') csvfile = open(str2, 'wb') writecsv = csv.writer(csvfile, quoting=csv.QUOTE_ALL) for rownum in xrange(sh.nrows): writecsv.writerow(x1.row_values(rownum)) csvfile.close() # loop for day in xrange(0, total_days): current_date = (start_date + dt.timedelta(days = day)).date() file_date = str(current_date.year)+'_'+str(current_date.month)+'_'+str(current_date.day) srt1='D:/PATRICIA/TESTE/XLS/RR_'+file_date+'.xls' srt2='D:/PATRICIA/TESTE/CSV2/RR_'+file_date+'.csv' xls_to_csv(srt1, srt2) # function call