zoukankan      html  css  js  c++  java
  • 批量处理csv格式转换成xls

    结合下面的代码学习相关模块及函数方法的使用

    #coding:utf-8
    #导入相应模块
    import csv
    import xlwt
    import sys
    import os
    import fnmatch
    
    #另存为文件名
    def ex_file(mycsvfile):
        csvfile = open(mycsvfile,"rb")
        #csvfile = open("test.csv","rb")
        #新建excel文件
        myexcel = xlwt.Workbook()
        #新建sheet页
        mysheet = myexcel.add_sheet("data")
        #获取csv的文件绝对路径及文件名不包括后缀,
       及os.path.splitext(“文件的绝对路径”)
       返回的是一个含有两个元素的列表,
    portion[0]是包含文件名的值,portion[1]是“.后缀”
    portion = os.path.splitext(mycsvfile) #读取文件信息 reader = csv.reader(csvfile) l = 0 #通过循环获取单行信息 for line in reader: r = 0 #通过双重循环获取单个单元信息 for i in line: #通过双重循环写入excel表格 mysheet.write(l,r,i) r=r+1 l=l+1 #最后保存到excel,以原有文件名保存,更换后缀 myexcel.save(portion[0]+".xls") print portion[0] + '.xls' +u"保存成功!" #文件路径处理函数 def iterfindfiles(path, fnexp): #os.walk() 函数返回三个函数,root就是path的的路径本身及 其下所有文件夹的路径了,
    dir是path下面的文件夹名,没有就是一个空列表[],files是path以及path下的文件夹下的文件列表集合
    #这样相当于遍历了path路径下的所有文件,这些可以通过print 他们的返回值来查看 for root, dirs, files in os.walk(path): #fnmatch.filter(,) 返回值是得到的后缀为fnexp的文件 列表信息。
          即在文件名包括后缀的files列表中匹配后缀为fnexp参数值的文件组成新的列表赋值给filename
    for filename in fnmatch.filter(files, fnexp): #root为当前遍历时的路径,这里的os.path.join()方法是件root路径和filename拼接为文件的绝对路径 #yield 是为函数iterfindfiles()的返回值追加数据的有迭代的意思,每次循环就返回一个返回值,一直追加返回 yield os.path.join(root, filename) #批量处理 if __name__=="__main__": #输入要转换文件的路径 path=raw_input("Please enter a path:") #数据要转换文件的文件名因为是批处理,所以使用通配符 “*”号 “*.csv” 表示目标路径下的所有csv格式文件 fnexp=raw_input("Please enter a fnexp:") #调用文件处理函数 for filename in iterfindfiles(path, fnexp): #filename 是接收返回值列表的,返回一个值调用一次ex_file()函数,并把返回值作为参数 ex_file(filename) raw_input ('please enter to exit')

    代码中用到的函数说明

    1、os.walk(path)

    import os  
    
    for root, dirs, files in os.walk(r'D:	estDemoCode'):  
    
      print root   #当前遍历到的目录的根  
    
      print dirs   #当前遍历到的目录的根下的所有目录的名称,存储到列表中 
    
      print files  #当前遍历到的目录的根下的所有文件名包括后缀,存储到列表中

    2、fnmatch.filter(files, fnexp)

      在files文件列表中匹配后缀为fnexp的文件,并把匹配到的结果返回到一个列表中

    3、os.path.join(root, filename)

      把文件名filename和文件路径root拼接在一起作为一个整体

    4、yield

      yield相当于一个迭代器,会把返回值一个一个的返回给主函数

    5、os.path.splitext(mycsvfile)  &&  os.path.split("文件名称")

      分解文件的绝对路径和扩展名的到的是一个列表[]

      fpathandname , fext = os.path.splitext( "你要分解的路径")

      例如:

      a, b = os.path.splitext( "c:\123\456\test.txt" )

      print a

      print b

      显示:

      c:123456 est

      .txt

     将一个路径名分解为目录名和文件名两部分

      fpath , fname = os.path.split( "你要分解的路径")

      例如:

      a, b = os.path.split( "c:\123\456\test.txt" )

      print a

      print b

      显示:

      c:123456

      test.txt

  • 相关阅读:
    [转]23种经典设计模式的java实现_5_职责链模式
    ARM汇编伪指令介绍
    avrstudio 5 按键控制led移位
    linux 应用程序里面调用shell
    avrstudio 5 同时点亮8只数码管
    从Linux程序中执行shell(程序、脚本)并获得输出结果(转)
    avrstudio 5 矩阵键盘
    linux 格式化输出输入函数
    Google 浏览器(2011)书签同步
    linux下面的路径问题
  • 原文地址:https://www.cnblogs.com/Skyyj/p/4762113.html
Copyright © 2011-2022 走看看