python 实现批量xls文件转csv文件的方法


Posted in Python onOctober 23, 2018

引言:以前写的一个批量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()

以上这篇python 实现批量xls文件转csv文件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python BeautifulSoup使用方法详解
Nov 21 Python
Python信息抽取之乱码解决办法
Jun 29 Python
儿童编程python入门
May 08 Python
Python中的heapq模块源码详析
Jan 08 Python
pycharm访问mysql数据库的方法步骤
Jun 18 Python
pyenv与virtualenv安装实现python多版本多项目管理
Aug 17 Python
pycharm实现在子类中添加一个父类没有的属性
Mar 12 Python
Python基于stuck实现scoket文件传输
Apr 02 Python
PythonPC客户端自动化实现原理(pywinauto)
May 28 Python
浅谈Python中文件夹和python package包的区别
Jun 01 Python
python中rb含义理解
Jun 18 Python
python基于OpenCV模板匹配识别图片中的数字
Mar 31 Python
python 把列表转化为字符串的方法
Oct 23 #Python
python 将list转成字符串,中间用符号分隔的方法
Oct 23 #Python
浅谈python中拼接路径os.path.join斜杠的问题
Oct 23 #Python
python 拼接文件路径的方法
Oct 23 #Python
python 将列表中的字符串连接成一个长路径的方法
Oct 23 #Python
Python运行不显示DOS窗口的解决方法
Oct 22 #Python
python批量赋值操作实例
Oct 22 #Python
You might like
用PHP函数解决SQL injection
2006/10/09 PHP
ASP知识讲座四
2006/10/09 PHP
hessian 在PHP中的使用介绍
2010/12/13 PHP
php中检查文件或目录是否存在的代码小结
2012/10/22 PHP
php警告Creating default object from empty value 问题的解决方法
2014/04/02 PHP
javascript编程起步(第一课)
2007/01/10 Javascript
jquery实现图片左右间隔滚动特效(可自动播放)
2013/05/08 Javascript
js综合应用实例简单的表格统计
2013/09/03 Javascript
jquery与js函数冲突的两种解决方法
2013/09/09 Javascript
javascript中创建对象的几种方法总结
2013/11/01 Javascript
js实现的复制兼容chrome和IE
2014/04/03 Javascript
JS实现来回出现文字的状态栏特效代码
2015/10/31 Javascript
Bootstrap文件上传组件之bootstrap fileinput
2016/11/25 Javascript
JavaScript组成、引入、输出、运算符基础知识讲解
2016/12/08 Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
2016/12/21 Javascript
js中常用的Math方法总结
2017/01/12 Javascript
大白话讲解JavaScript的Promise
2017/04/06 Javascript
zTree树形菜单交互选项卡效果的实现方法
2017/12/25 Javascript
vue项目打包后打开页面空白解决办法
2018/06/29 Javascript
使用preload预加载页面资源时注意事项
2020/02/03 Javascript
node.js 微信开发之定时获取access_token
2020/02/07 Javascript
微信小程序保持session会话的方法
2020/03/20 Javascript
[02:40]DOTA2殁境神蚀者 英雄基础教程
2013/11/26 DOTA
Pandas:Series和DataFrame删除指定轴上数据的方法
2018/11/10 Python
python之信息加密题目详解
2019/06/26 Python
Pytorch中实现只导入部分模型参数的方式
2020/01/02 Python
拥有超过850家商店的美国在线派对商店:Party City
2018/10/21 全球购物
英国家居用品和家居装饰品购物网站:Cox & Cox
2019/08/25 全球购物
应届毕业生自荐信例文
2014/02/26 职场文书
老兵退伍感言
2015/08/03 职场文书
介绍信应该怎么开?
2019/04/03 职场文书
创业分两种人:那么哪些适合创业?,哪些适合不适合创业呢?
2019/08/23 职场文书
《雪域豹影》读后感:父爱的伟大
2019/12/23 职场文书
与Windows10相比Windows11有哪些改进?值不值得升级?
2021/11/21 数码科技
SpringDataJPA实体类关系映射配置方式
2021/12/06 Java/Android
nginx设置资源请求目录的方式详解
2022/05/30 Servers