嵌入式目标板程序的压缩(2)--学习python脚本,测试LZMA
2011-03-14 23:37
344 查看
嵌入式目标板程序的压缩(1)--学习使用LZMA SDK
上次说到写了个简单程序,准备输入不同的参数进行测试,从而观察压缩比率和参数的大概关系,压缩对象是我的程序。原本打算用batch批处理,但一想到可能有不少变量,总觉得batch很麻烦,没有bash shell之类来得方便。windows下没试过用shell脚本,忽然想起之前装了python,这些工作应该都可以用python解决。于是找了几本电子书,快餐式地边学边用。
经过努力,弄出了个这样的脚本,可以说是利用python语法和库的一个批处理:
import os
for para_lc in range(0,8+1):
for para_lp in range(0,4+1):
for para_pb in range(0,4+1):
for para_dsi in range(0,27+1):
fn_origin = 'file.in'
fn_lzw = 'file' + '_lc{0}_lp{1}_pb{2}_dsi{3}'.format(para_lc, para_lp, para_pb, para_dsi) + '.out'
fn_unlzw = fn_lzw + '.in'
os.spawnl(os.P_WAIT, 'LZWStudyer.exe', '--encode-lc {2} --encode-lp {3} --encode-pb {4} --encode-dsi {5} --file-in {0} --file-out {1}'.format(fn_origin, fn_lzw, para_lc, para_lp, para_pb, para_dsi))
#end of for para_dsi
#end of for para_pb
#end of for para_lp
#end of for para_lc
这算是我第一个python程序了,实现了根据不同参数组合运行程序,并把结果分别输出到一堆按参数命名文件的功能。 显然,这个脚本生成了6300个文件.....
为了更好地进行分析,我又写了一个脚本
import os, sys, glob
StatList = list()
for FileName in glob.glob('*.out'):
FileStat = os.stat(FileName)
(name,ext) = os.path.splitext(FileName)
(postname,lc,lp,pb,dsi) = (elem for elem in name.split('_'))
StatList.append([FileStat.st_size, lc[2:], lp[2:], pb[2:], dsi[3:]]);
with open('LZWEncStatResult.dat', mode='w', encoding='utf-8') as FileResult:
for elem in StatList:
result = '{0}/t{1}/t{2}/t{3}/t{4}/n'.format(elem[0], elem[1], elem[2], elem[3], elem[4])
FileResult.write(result)
这回把参数组合和输出文件大小都列在一个表格里,可以用excel之类打开排序,或者用matlab之类画图处理。
总的来说,这两个脚本都挺简单的,主要是语法和库的使用。要想用好python增加工作效率,蜻蜓点水式的学习是不行的,还得打好基础,系统地去学。当然,关键还是要多用,熟能生巧。
经过了简单的测试,下一步就是要把解压部分代码融入到我现有的工程里面去了。(待续)
上次说到写了个简单程序,准备输入不同的参数进行测试,从而观察压缩比率和参数的大概关系,压缩对象是我的程序。原本打算用batch批处理,但一想到可能有不少变量,总觉得batch很麻烦,没有bash shell之类来得方便。windows下没试过用shell脚本,忽然想起之前装了python,这些工作应该都可以用python解决。于是找了几本电子书,快餐式地边学边用。
经过努力,弄出了个这样的脚本,可以说是利用python语法和库的一个批处理:
import os
for para_lc in range(0,8+1):
for para_lp in range(0,4+1):
for para_pb in range(0,4+1):
for para_dsi in range(0,27+1):
fn_origin = 'file.in'
fn_lzw = 'file' + '_lc{0}_lp{1}_pb{2}_dsi{3}'.format(para_lc, para_lp, para_pb, para_dsi) + '.out'
fn_unlzw = fn_lzw + '.in'
os.spawnl(os.P_WAIT, 'LZWStudyer.exe', '--encode-lc {2} --encode-lp {3} --encode-pb {4} --encode-dsi {5} --file-in {0} --file-out {1}'.format(fn_origin, fn_lzw, para_lc, para_lp, para_pb, para_dsi))
#end of for para_dsi
#end of for para_pb
#end of for para_lp
#end of for para_lc
这算是我第一个python程序了,实现了根据不同参数组合运行程序,并把结果分别输出到一堆按参数命名文件的功能。 显然,这个脚本生成了6300个文件.....
为了更好地进行分析,我又写了一个脚本
import os, sys, glob
StatList = list()
for FileName in glob.glob('*.out'):
FileStat = os.stat(FileName)
(name,ext) = os.path.splitext(FileName)
(postname,lc,lp,pb,dsi) = (elem for elem in name.split('_'))
StatList.append([FileStat.st_size, lc[2:], lp[2:], pb[2:], dsi[3:]]);
with open('LZWEncStatResult.dat', mode='w', encoding='utf-8') as FileResult:
for elem in StatList:
result = '{0}/t{1}/t{2}/t{3}/t{4}/n'.format(elem[0], elem[1], elem[2], elem[3], elem[4])
FileResult.write(result)
这回把参数组合和输出文件大小都列在一个表格里,可以用excel之类打开排序,或者用matlab之类画图处理。
总的来说,这两个脚本都挺简单的,主要是语法和库的使用。要想用好python增加工作效率,蜻蜓点水式的学习是不行的,还得打好基础,系统地去学。当然,关键还是要多用,熟能生巧。
经过了简单的测试,下一步就是要把解压部分代码融入到我现有的工程里面去了。(待续)
相关文章推荐
- 嵌入式目标板程序的压缩(1)--学习使用LZMA SDK
- 嵌入式目标板程序的压缩(1)--学习使用LZMA SDK
- 编写Python小程序来统计测试脚本的关键字
- [python] 3 、基于串口通信的嵌入式设备上位机自动测试程序框架(简陋框架)
- python实现测试脚本的关键字统计程序
- PHP程序加速探索[2]--脚本执行速度测试.代码优化.压缩输出gzip
- PHP程序加速探索[2]--脚本执行速度测试.代码优化.压缩输出gzip
- 嵌入式目标板程序的压缩(3)--实现目标板解压升级程序功能
- 学习练习程序:根据日期提取日志的python脚本。
- 配置Apache2.x 支持shell脚本和Python编写CGI程序+测试程序
- 编写Python小程序来统计测试脚本的关键字
- 31. Python脚本学习笔记三十一程序打包
- 网络游戏服务器开发::学习了两天python写了一个linux下自动安装程序的脚本
- Python学习-----Tinypng图片压缩小程序(2)
- 27. Python脚本学习笔记二十七 测试及测试工具
- Python学习-----Tinypng图片压缩小程序
- 通过编写Python小程序来统计测试脚本的关键字分析 20160328
- python-day0003-搭建基于python的selenium自动化测试---第一个简单的测试脚本
- python学习之--调用shell脚本
- 用adb(调试桥)使用python脚本辅助微信小程序跳一跳简单实用教程【新人适用一条龙】附带资源