您的位置:首页 > 编程语言 > Python开发

嵌入式目标板程序的压缩(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增加工作效率,蜻蜓点水式的学习是不行的,还得打好基础,系统地去学。当然,关键还是要多用,熟能生巧。

经过了简单的测试,下一步就是要把解压部分代码融入到我现有的工程里面去了。(待续)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: