python自动汇总文件内容

作者: alue | 来源:发表于2019-02-25 23:18 被阅读0次

    今天接到一个活儿, 简单的描述这个任务如下:

    有200多个txt文件, 每个文件里都有若干行文字, 请将它们汇总到一个excel表中. 格式为 第一列为文件名, 第二列为对应的文字, 每行文字在excel里单独为一行.

    基层工作者如果没有编程基础, 遇到这样的任务, 最起码得耗费半天的精力, 然后抱怨工作强度大且无聊. 稍微有点编程功底的都能想到, 这种重复的体力活完全可以让计算机代劳. 我花了半个小时, 百度拼凑出来的python代码完美的解决了这个问题.

    import os #文件处理相关库
    from xlwt import * #excel处理相关库
    
    filenames = os.listdir()#获取该脚本同级目录下的所有文件名
    
    data = {}#字典, 用于存储 文件名:文件内容
    
    for fn in filenames:
        filename,ext = os.path.splitext(fn) 
        if ext == '.txt':
            # 如果是txt文件, 则读取内容
            fp = open(fn,'r', encoding='UTF-8')
            lines = fp.readlines()
            data[filename] = lines
            fp.close()
    
    # 已经将所有内容存在了data里, 下一步就是生成excel
    file = Workbook(encoding = 'utf-8')
    table = file.add_sheet('data')
    table.write_merge(0,0,0,1,'文件统计表')#第0行前两列合并
    table.write(1,0,'文件名')#第1行第0列的标题
    table.write(1,1,'内容')#第1行第1列的标题
    
    # 从第2列开始写入data
    index = 2
    for (ip,path) in data.items():
        index_begin = index
        if path:
            for p in path:
                table.write(index,1,p)
                index = index + 1
        else:#特殊处理空文件
            index = index + 1
        index_end = index-1
        table.write_merge(index_begin,index_end,0,0,ip)#第0列,一个文件对应的多行要合并
    
    # 利用当前时间生成excel文件名,避免重复修改等问题
    import time
    filename = 'mydata' + str(int(time.time())) + '.xls'
    file.save(filename)
    
    

    将上述代码, 放在目标文件的同级目录下, 运行即可. 得到的示例结果如下所示:

    运行结果示例

    相关文章

      网友评论

        本文标题:python自动汇总文件内容

        本文链接:https://www.haomeiwen.com/subject/gvonyqtx.html