白云岛资源网 Design By www.pvray.com
测试修改前,先打包备份!
测试修改前,先打包备份!
测试修改前,先打包备份!
重要的事情说三遍
新手,网上东拼西凑了个脚本。
功能:批量搜索py脚本所在目录及子目录下的excel的xls文件,替换修改表格里内容。
[Python] 纯文本查看 复制代码
#!/usr/bin/python# -*- coding: utf-8 -*-# Date: 2022/01/08# testing System version: CentOS Linux release 7.8.2003 (Core)# Python version : 2.7.5 (default, Apr 2 2020, 13:16:51)# xlrd module version : 2.0.1# xlwt module version : 1.3.0# xlutils module version :2.0.0# 注意:1.只支持xls(excel 97/2003)文件,不支持xlsx(excel 2007/2010+)# 2.脚本中注释在实际使用时删掉,否则可能会在某些环境下有奇怪问题 import os,sysimport xlrd,xlwtfrom xlutils.copy import copy ## 旧的字符串old_str = ['pkgname','username','dbinfo','dbname']## 替换的新字符串,新旧列表中位置要对应new_str = ['PKGNAME','USERNAME','DBINFO','DBNAME'] ## 新旧字符串列表长度len_old_str = len(old_str)len_new_str = len(new_str)## 检查新旧字符串列表数量是否相等,不相等退出if len_old_str != len_new_str: print "\n[ Error ] 'old_str =",len_old_str,"' not eq 'new_str =",len_new_str,"'\n" sys.exit(); ## 小写转大写def str_to_STR( xls_list ): ## 读取Excle文件 wb = xlrd.open_workbook( xls_list ) ## 将uncode编码汉字显示成可读 reload(sys) sys.setdefaultencoding( "utf-8" ) ## 读取第1个索引的sheet页,索引0开始 sheet = wb.sheet_by_index(1) ## 读取excle里第一个sheet页,第10列(J列)内容,索引0开始 col = sheet.col_values(9) print "\n[ OK ] 共读取 %s 行。" %len(col) new_col = [] new_col_tmp = [] ## 循环替换小写到大写;for循环两个参数时用zip包含 for f_old_str,f_new_str in zip(old_str,new_str): print "[ Info ] 正在查找 '%s' 并替换成 '%s'" %(f_old_str,f_new_str) if not new_col_tmp : ## 首次循环列表空,复制列表 new_col_tmp = col for col_list in new_col_tmp: new_col.append(col_list.replace(f_old_str,f_new_str)) ## 交换列表值,防止多次循环重复添加 ## 清空列表 new_col_tmp = [] ## 复制列表 new_col_tmp = new_col ## 清空列表 new_col = [] print "[ OK ] 共修改 %s 行。" %len(new_col_tmp) ## save date to EXCLE row = 0 #行 column = 9 # 列 ## 新建文件 #workbook1 = xlwt.Workbook() ## 打开文件追加(覆盖)原内容,formatting_info=True保留文件原来格式 #workbook1 = xlrd.open_workbook(r'/media/win-share-c/test.xls') workbook1 = xlrd.open_workbook( xls_list, formatting_info=True) #print workbook ## 新文件中添加,名字为"Style"的sheet页,内容cell_overwrite_ok覆盖 #sheet_wt = workbook.add_sheet('Style',cell_overwrite_ok=True) ## 将xlrd的对象转化为xlwt的对象 workbook = copy(workbook1) ## 获取要操作的第0个sheet页 sheet_wt = workbook.get_sheet(1) ## 循环追加写入内容 for i in range(len(new_col_tmp)): sheet_wt.write(row,column,new_col_tmp[i]) ## 到下一行 row = row + 1 ## 捕获保存文件异常 try: workbook.save( xls_list ) except IOError: print "\n[ Error ] 写入错误,请关闭文件!\n" else: def_xls_file_name = os.path.basename(xls_list) print "\n[ OK ] 文件: %(def_xls_file_name)s 第%(column)s列,小写转大写完成,保存到文件完成!\n" % locals(); return ## function Maindef main(): ## 查找.xls后缀文件 xls_file_lists = [] ## 循环查找py文件同目录及子目录下的xls文件 for filepath,dirnames,filenames in os.walk(os.getcwd()): for filename in filenames: ## 文件后缀为.xls,则添加到列表中 if os.path.splitext(filename)[1] == '.xls': ## sep自动识别系统路径分割,用'/'或'\' #xls_file_lists.append(os.path.join(filepath,filename)) xls_file_lists.append(os.sep.join([filepath,filename])) len_xls_file_lists = len(xls_file_lists) print "\n共找到 %s 个xls后缀文件:" %len_xls_file_lists ## 列出找到的xls后缀文件 for list in xls_file_lists: print list ## 开始读取数据并替换 for xls_list in xls_file_lists: print "\n开始读取: %s" %xls_list str_to_STR( xls_list ) if ( __name__ == '__main__' ) or ( __name__ == 'main' ): main();
效果图:
image.png
执行提示
替换前:
image.png
替换前
替换后:
image.png
替换后
__EOF__
白云岛资源网 Design By www.pvray.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
白云岛资源网 Design By www.pvray.com
暂无评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。