最近有点忙有点烦,天天忙于数据治理,说是数据治理,整天就是忙于整理和下发各种表格,从开始下发到各地区的表格合并进来,再到入库,再到比对,再到分离下发,再到按字段拆分,从xlrd,lxlwr,openpyxl,pandas,再到cx_Oracle,再到fuzzywuzzy,gensim等等,从最初的流水版本进化到封装成类,挺繁琐的,不过也挺好玩的。
整个文件的资源目录结构如下
要做的事情就是把各子文件夹下文件名为《文件类型一》、《文件类型二》、《文件类型三》的全合并成一个个大文件,sheet名都是Sheet0,还是有章可循的。
代码语言:javascript复制import os
import openpyxl
asepath = r'C:UsersbaoqiDocuments'
sheetname='Sheet0'
destfilename=r'C:UsersbaoqiDocuments海南文件类型一.lsx'
keyword='文件类型一'
代码语言:javascript复制# 获取当前文件夹下的各单位文件夹
allpath = os.listdir(basepath)
data = []
for curpath in allpath:
# 拼接路径及文件
fullpath = basepath '\' curpath
if os.path.isfile(fullpath):
continue
allfiles=os.listdir(fullpath)
# 获取各单位文件夹下的文件
for curfile in allfiles:
curpathfile=fullpath '\' curfile
if not os.path.isfile(curpathfile) or '~' in curfile:
continue
if keyword in curfile:
print('读取文件 ',curpathfile)
lsdatalist=[]
# 打开文件,打开指定sheet
wb = openpyxl.load_workbook(curpathfile)
sh = wb[sheetname]
# 获取sheet数据
rows = list(sh.rows)
# 遍历读取行信息,并附加补充列
for row in rows[4:]:
case = [] # 追加了一些区识字段 case.append(keyword)
case.append(curpath)
for r in row:
case.append(r.value)
data.append(case)
wb.close()
print('{} 共读取{}行'.format(keyword,len(data)))
wb = openpyxl.Workbook()
sh = wb.active
sh.title = sheetname
for ss in data:
sh.append(ss)
wb.save(destfilename)
print("写入{}文件成功!".format(destfilename))
代码还是有很多简化和优化空间的。