字符串替换批量修改脚本

针对客户需求,会遇到测试用例中Counter名称改变的问题,此脚本主要解决批量Case文件修改Counter名称的问题,源码如下:

 

 1 #!/usr/bin/python
 2 # -*- coding:utf-8 -*-
 3 
 4 import sys,os
 5 import xlrd
 6 
 7 # 枚举当前目录下的所有.mp文件,并返回list
 8 def get_filename(): 
 9 #begin  
10     fileDir = "." + os.sep
11     L = []
12     for root, dirs, files in os.walk(fileDir): 13 for file in files: 14 if os.path.splitext(file)[1] == '.mp': 15  L.append(os.path.join(file)) 16 #print L 17 return L 18 #end 19 20 #通过读取Excel文件的方式获取旧的counter名称和新的counter名称,存为list 21 #并将所有get到的counter名称按照长度从大到小进行排序,防止短counter名称先替换 22 #实际执行中发现长counter名称包含短counter名称,而如果短counter先与长counter替换,则导致长counter无法替换 23 def get_countername(): 24 fname = "counterfile\CounterNameAll.xls" 25 bk = xlrd.open_workbook(fname) 26 shxrange = range(bk.nsheets) 27 try: 28 sh = bk.sheet_by_name("Sheet1") 29 except: 30 print "no sheet in %s named Sheet1" % fname 31 #获取行数 32 nrows = sh.nrows 33 #获取列数 34 ncols = sh.ncols 35 print "nrows %d, ncols %d" % (nrows,ncols) 36 37 counter_list = [] 38 row_list = [] 39 #获取各行数据 40 for i in range(0,nrows): 41 row_data = sh.row_values(i) 42  row_list.append(row_data) 43 #对get到的二维数组进行排序 44 row_list = sorted(row_list, key=lambda row:len(row[1]), reverse=True) 45 for i in range(0,nrows): 46 for j in range(0,ncols): 47 counter_list.append(row_list[i][j].encode('utf-8')) 48 new_list = [] 49 for count in counter_list: 50 new_list.append(count.replace('\xc2\xa0', ' ')) 51 for i in range(0,len(new_list),2): 52 new_list[i] = ' '*(len(new_list[i+1])-len(new_list[i])) + new_list[i] 53 print new_list 54 return new_list 55 56 57 58 #把指定文件的内容替换的函数,多个环境参数并行替换,这样就可以一个脚本,多个通用。 59 def repip_func(file_path, counter_list): 60 61 f = open(file_path,'r+') 62 all_the_lines = f.readlines() 63  f.seek(0) 64  f.truncate() 65 for line in all_the_lines: 66 i = 0 67 while i < len(counter_list): 68 line = line.replace(counter_list[i+1],counter_list[i]) 69 i = i + 2 70  f.write(line) 71  f.close() 72 73 #print "%s have replace ip %s" % (file_path, counter_list) 74 75 def main(): 76 repip_file_list = get_filename() 77 counter_list = get_countername() 78 for file_path in repip_file_list: 79  repip_func(file_path, counter_list) 80 #print counter_list 81 82 if __name__ == "__main__": 83 main()

 

具体的使用文档:

Counter名称修改脚本使用手册:

1.将需要修改的counter名复制粘贴到Excel里,counter名称保存为n行2列,第一列为new counter名,第二列为old counter名,不需要表头,从(row1,col1)开始:

 

2.在CounterRename.py同级目录下新建counterfile文件夹,并将excel保存至counterfile文件夹内,如图:

 

3.在CounterRename.py中修改保存的excel名称:

 

4.将需要修改counter名称的文件放CounterRename.py同级目录下:

 

 5.在CounterRename.py中修改需要批量Rename的文件属性:

 

6.执行CounterRename.py脚本,即可完成修改。

 

 

注:

执行脚本时,控制台回打印从excel中获得的文件名,以方便检查,new_counter_name前的空格是对齐需要,不影响实际修改

 

转载于:https://www.cnblogs.com/DesperateCupid/articles/7440381.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值