今天接到一个活儿, 简单的描述这个任务如下:
有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)
将上述代码, 放在目标文件的同级目录下, 运行即可. 得到的示例结果如下所示: