嵌入式目标板程序的压缩(2)--学习python脚本,测试LZMA

本文介绍了作者如何使用Python脚本来实现嵌入式目标板程序的LZMA压缩测试。通过编写两个脚本,一个用于根据不同参数组合运行压缩程序并输出结果,另一个收集压缩后的文件大小信息并生成数据表,便于进一步分析。作者强调要深入学习Python以提高工作效率,并计划将解压代码整合进工程中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

经过了简单的测试,下一步就是要把解压部分代码融入到我现有的工程里面去了。(待续)

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值