python 提升生活和办公效率

python自动汇总文件内容

2019-02-25  本文已影响0人  alue

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

有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)

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

运行结果示例
上一篇 下一篇

猜你喜欢

热点阅读