最近做性能测试,写了个python程序自动将URL里面的‘%2B’,‘20%’,‘3B'等转换成正常字符,方便查看。

import os,sys;

path = sys.path[0]
os.chdir(path)
encode_list = 'encode_list.txt'
result = path + '\\results' def get_encode():
encode_file = open(path + '\\'+ encode_list)
encode = dict()
for line in encode_file:
if line!='\n' and len(line) >1:
if line.find('read me') <0:
encode[line[1:].strip()] = line[0]
return encode def get_files():
files = os.listdir(path)
file_list = list()
for file in files:
if file.endswith('.txt') and file!= encode_list:
file_list.append(file)
return file_list def relace_url_encode(strPri,dicEncode):
items = dicEncode.items()
for (key,value) in items:
if strPri.find(key):
strPri = strPri.replace(key,value)
return strPri def create_result():
if not os.path.isdir(result):
os.makedirs(result) def write_result(filePri,strText):
fp = open(result+'\\'+filePri,'w+')
fp.write(strText)
fp.close() create_result()
encode = get_encode()
file_list = get_files()
for ff in file_list:
try:
f = open(ff)
text = f.read()
finally:
f.close()
temp = relace_url_encode(text,encode)
temp = temp.replace('&','\n')
write_result(ff,temp)

下面是文件夹结构:

encode.py的代码贴在上面

encode_list.txt里面装的是转换对照表,其中文件名是hard code在python程序里面的,最好不要改

前面的是正常字符,后面的是需要转换的字符

需要转码的URL形如下面的形式:

selectForm=selectForm&publishId=iphone6SapptR&color=%7B%22colorDisplayText%%3A%22Grey%%2C%22colorId%%3A%22Grey%%2C%22publishId%%3A%22iphone6SapptM%%2C%22modelCode%%3A%22iphone6SmodelM%%2C%22available%%3Atrue%7D&rom=%7B%22capacityDisplayText%%3A%2216GB%%2C%22capacityId%%3A%2216GB%%2C%22imageFileName%%3A%22iPhoneX-gold.png%%2C%22publishId%%3A%22iphone6SapptM%%2C%22modelCode%%3A%22iphone6SmodelM%%2C%22available%%3Atrue%7D&locationId=%7B%22locationId%%3A%22Marina_Bay_Sands_Exhibition_Hall_A%%2C%22locationDisplayText%%3A%22Marina%20Bay%20Sands%20Exhibition%20Hall%20A%%2C%22publishId%%3A%22iphone6SapptM%%2C%22available%%3Atrue%7D&dateId=&timeId=&javax.faces.ViewState=H4sIAAAAAAAAAE1QO0sDQRAeL7n4RGIEK9PZWLhgJ1hoQIOH8YGgCBa6uVuTC3e76z5ydxaBNFrYWGhhIVpY5k%2BIhZ2gpZXYW9u6F0LiBzvMst9jZjs%2FYHMpYKqBmxhp5QdoA8v6Fub28Ofzy8zJewasMowFDHtl7ComHBhVdUFknQVezFdWIcVENGJq3hxLwazLQiQ1RafYJRKtJRSHvltylc%2BoNFnTg6ySEDip%2BFLF7Y%2Fi3Su%2Bz8CQA1npn5OYp8ZRNq2xArtx7HuL2qiPKl19gGkN7VQ
bxFXL12%2BHD3k5H1iGmsosfQYtyJnO5gb9W6YlYCFVx73ZzKScUUIV2ncOfBLtMabmdgXjRKhkkyQSeigYZwGTg%2BR1qsP%2Fj1xBLsBSOV7%2FN7s8hypSI6Lw%2Ffj0275cstL97CYONDF%2B%2BQFvW4dVIi46t8Xxm6%2Br%2FiKcx3%2FTRn8XowEAAA%3D%3D&javax.faces.source=color%3A1&javax.faces.partial.event=change&javax.faces.partial.execute=color%20color%3A1&javax.faces.partial.render=productImage%20rom%20timeId%20dateId%20locationId&javax.faces.behavior.event=change&javax.faces.partial.ajax=true

我把转码过的结果全部放在result文件夹里面,双击运行,所有的txt文件都会被转码。并且该文件夹随便放在哪里,代码均可以执行。
转码过后:

selectForm=selectForm
publishId=iphone6SapptR
color={"colorDisplayText":"Grey","colorId":"Grey","publishId":"iphone6SapptM","modelCode":"iphone6SmodelM","available":true}
rom={"capacityDisplayText":"16GB","capacityId":"16GB","imageFileName":"iPhoneX-gold.png","publishId":"iphone6SapptM","modelCode":"iphone6SmodelM","available":true}
locationId={"locationId":"Marina_Bay_Sands_Exhibition_Hall_A","locationDisplayText":"Marina_Bay_Sands_Exhibition_Hall_A","publishId":"iphone6SapptM","available":true}
dateId=
timeId=
javax.faces.ViewState=H4sIAAAAAAAAAE1QO0sDQRAeL7n4RGIEK9PZWLhgJ1hoQIOH8YGgCBa6uVuTC3e76z5ydxaBNFrYWGhhIVpY5k+IhZ2gpZXYW9u6F0LiBzvMst9jZjs/YHMpYKqBmxhp5QdoA8v6Fub28Ofzy8zJewasMowFDHtl7ComHBhVdUFknQVezFdWIcVENGJq3hxLwazLQiQ1RafYJRKtJRSHvltylc+oNFnTg6ySEDip+FLF7Y/i3Su+z8CQA1npn5OYp8ZRNq2xArtx7HuL2qiPKl19gGkN7VQ
bxFXL12+HD3k5H1iGmsosfQYtyJnO5gb9W6YlYCFVx73ZzKScUUIV2ncOfBLtMabmdgXjRKhkkyQSeigYZwGTg+R1qsP/j1xBLsBSOV7/N7s8hypSI6Lw/fj0275cstL97CYONDF++QFvW4dVIi46t8Xxm6+r/iKcx3/TRn8XowEAAA==
javax.faces.source=color:1
javax.faces.partial.event=change
javax.faces.partial.execute=color_color:1
javax.faces.partial.render=productImage_rom_timeId_dateId_locationId
javax.faces.behavior.event=change
javax.faces.partial.ajax=true

转换后就可以更方便的查找对比,方便测试进行。

应该还有需要改进的地方,如果测试需要,再做改进。

最新文章

  1. java根据标点英文分词
  2. 安装numpy
  3. 【转】gtk+多线程的程序实例
  4. Zabbix日志监视的汇总报警(更新发送邮件脚本)
  5. iOS开发小技巧--学会包装控件(有些view的位置由于代码或系统原因,位置或者尺寸不容易修改或者容易受外界影响)
  6. redis虚拟机模拟集群,节点,增加多端口命令
  7. System.Diagnostics.Debug和System.Diagnostics.Trace 【转】
  8. html5添加音乐包括暂停
  9. DNS解析原理
  10. 使用C#代码追加和提交文件到SVN服务器
  11. 搭建Struts2开发环境
  12. java 重载与重写 【转】
  13. NetFlow学习笔记
  14. PL/SQL NOCOPY限制模式
  15. Words to Use Instead of &quot;Very&quot;
  16. sprintf()、fprintf()、fscanf()的用法
  17. UNIX网络编程——ioctl 函数的用法详解
  18. 使用MD5加密的登陆demo
  19. Servlet生命周期 、Filter生命周期、Listering(监听器)总结
  20. uni-app版本在线更新问题(下载完成安装时一闪而过,安卓8以上版本)

热门文章

  1. [CSS3] CSS Background Images
  2. LeetCode_Maximum Depth of Binary Tree
  3. githubclient配置方法简述
  4. jquery outerHeight方法 outerWidth方法 获取元素实际宽度高度
  5. hdu 4628 Pieces(状态压缩+记忆化搜索)
  6. iOS 常见小问题
  7. 基于FPGA的跨时钟域信号处理——专用握手信号
  8. Oracle GoldenGate
  9. 前后端分离跨域 关于前后端分离开发环境下的跨域访问问题(angular proxy=&gt;nginx )
  10. [JZOJ 5910] [NOIP2018模拟10.18] DuLiu 解题报告 (并查集+思维)