python 实现批量xls文件转csv文件的方法
引言:以前写的一个批量xls转csv的python简单脚本,用的是python2.7
#coding=utf-8 import os import time import logging import xlrd import csv #xls文件存放路径 INPUTPATH= u"D:\\lsssl\\桌面\\xls文件" #生成的csv文件存放路径 OUTPATH = u"D:\\lsssl\桌面\\csv" class changeCenter: def __init__(self): pass def getvalue(self,filename): self.mData = [] xlsfile=xlrd.open_workbook(filename) table = xlsfile.sheet_by_index(0)#sheet1 rownum = table.nrows #行 colsnum = table.ncols #列 for i in range(0,rownum): row = [] for j in range(0,colsnum): value = table.cell_value(i,j) if not isinstance(value,float): value = value.encode('gbk')#非数字转一下码 row.append(value) self.mData.append(tuple(row)) def write(self, path, filename): if not os.path.exists(path): os.makedirs(path) csvfile = file("tmp","wb") writer = csv.writer(csvfile) writer.writerows(self.mData) csvfile.close() if os.path.exists(os.path.join(path,filename+".old")): os.remove(os.path.join(path,filename+".old")) if os.path.exists(os.path.join(path,filename)): os.rename(os.path.join(path,filename),os.path.join(path,filename+".old")) os.rename('tmp', os.path.join(path,filename)) logging.info("write file finish") print "write",filename," finish" def handleExcel(): files,dirs,root = readFilename(INPUTPATH) for fi in files: strstock = os.path.join(INPUTPATH,fi) if os.path.exists(strstock): st = changeCenter() st.getvalue(strstock) name = fi.replace(".xls","") st.write(OUTPATH, name+".csv") else: print strstock+" don't exist" #获取某个路径下的所有文件 def readFilename(file_dir): for root, dirs, files in os.walk(file_dir): return files,dirs,root if __name__ == '__main__': handleExcel()