python 用os库和xlrd、xlwd库快速合并相同n个Excel文件操作实例( 二 )

def set_param():'''在当前文件目录下配置参数文件,若文件存在则打开文件,不存在则创建一个参数文件再打开'''try:f = open(r".合并Excel文件参数配置.txt", "x", encoding="utf-8")data = https://www.isolves.com/it/cxkf/yy/Python/2021-10-21/'<提示文本>在下面一行配置准备合并的Excel文件目录:nC:/Users/Administrator/Desktop/测试目录n<提示文本>第一行是否为标题行1表示是,0表示否:n0n<提示文本>设置汇总文件的文件名及文件格式:n汇总.xlsx'f.write(data)f.close()except FileExistsError:passos.startfile(r".合并Excel文件参数配置.txt")以上代码可以检查python程序目录下是否有接口文件,如有就打开供用户修改,没有就生产一个新的默认接口文件,再打开供用户修改 。
程序获取配置好的接口参数def get_param():'''获取用户配置好的配置文件'''param = {}f = open(r".合并Excel文件参数配置.txt", "r", encoding="utf-8")file_data = https://www.isolves.com/it/cxkf/yy/Python/2021-10-21/f.readlines()f.close()param["url"] = file_data[1].replace('n', "")param["title"] = eval(file_data[3].replace('n', ""))param["file_name"] = file_data[5].replace('n', "")return param非常简单,之前多次分析过,就不再多说了 。
本程序的核心程序类型,合并操作基本思想就是通过os操作获取目标目录下的所有文件名列表,再循环遍历这些文件(需要使用op.join(param["url"], file)来打开完整的具体文件路径,不懂的可以回头看看本文上面讲述的os库子库path的具体操作)
然后通过xlrd库读取数据出入二位列表values中
最后通过xlwt库将values中的数据输出到需要保持的Excel文件中
以下给出具体的代码:
def merge_excel(param):'''合并同类型的Excel文件'''files = os.listdir(param["url"])values = []# 存放获取的Excel文件内容for file in files:if file == param["file_name"]: continue# 不统计与汇总文件同名的文件,避免可能的重复统计# 将所有文件的内容都放入values变量中url = op.join(param["url"], file)data = https://www.isolves.com/it/cxkf/yy/Python/2021-10-21/xlrd.open_workbook(url)table = data.sheets()[0]nrows = table.nrowsif param["title"] == 1:# 若文件存在标题,把第一个读取到的文件标题做问所有内容的标题if file == files[0]:title = table.row_values(0)title.Append("数据来源")values.append(title)for i in range(param["title"], nrows):val = table.row_values(i)val.append(file)values.append(val)wa = xlwt.Workbook()# 创建工作簿b = wa.add_sheet('汇总')# 添加“汇总”工作表for i in range(len(values)):# 写入数据for j in range(len(values[i])):b.write(i, j, values[i][j])wa.save(op.join(param["url"], param["file_name"]))print("文件合并成功")为了增强程序互动,设计一个非常简单的菜单 。这个菜单可以很方便地修改为其他程序的菜单,大家可以看看,非常之简单
def menu():'''打印用户交互界面,获取用户操作'''print("合并同类Excel文件".center(48, "*"))print("1.配置参数")print("2.运行合并程序")print("3.打开合并后文件目录")print("4.退出程序")print("".center(50, "*"))while True:try:s = eval(input("请输入操作序号"))except:s = 0if s in [1, 2, 3, 4]:return selse:print('输入错误请重新输入')最后就是控制流程主函数了def main():while True:m = menu()if m == 1:set_param()input("设置好后按回车继续")elif m == 2:param = get_param()merge_excel(param)elif m == 3:try:os.startfile(param["url"])except:print("还没有获取到配置参数中的文件路径,请先运行合并程序,输入2运行合并程序")elif m == 4:break结语今天终于把最后一篇python基础的操作写完了,来头条写文章最大的收获不少一分两分钱,而是真正的可以鞭策自己主动学习,持续学习 。虽然一个上班族有的时候确实很忙,但能够学习进步、分析知识也比无聊玩手机好很多,感兴趣的可以一起讨论学习,共同进步 。这是全套基础Python学习笔记的链接,贡献给各位粉丝们,能够阅读到这个地方也真心感谢您的支持!
最基础的python学习笔记(入门级)
 
本文全部代码import osimport os.path as opimport xlrd as xlrdimport xlwt as xlwtdef menu():'''打印用户交互界面,获取用户操作'''print("合并同类Excel文件".center(48, "*"))print("1.配置参数")print("2.运行合并程序")print("3.打开合并后文件目录")print("4.退出程序")print("".center(50, "*"))while True:try:s = eval(input("请输入操作序号"))except:s = 0if s in [1, 2, 3, 4]:return selse:print('输入错误请重新输入')def set_param():'''在当前文件目录下配置参数文件,若文件存在则打开文件,不存在则创建一个参数文件再打开'''try:f = open(r".合并Excel文件参数配置.txt", "x", encoding="utf-8")data = https://www.isolves.com/it/cxkf/yy/Python/2021-10-21/'


推荐阅读