目录
1、python3.10压缩程序
打包并压缩log路径下的所有文件到logo.tar.gz文件中
import os
import tarfile
tf = tarfile.open(name='logo.tar.gz',mode='w:gz')
tf.add('log/')
tf.close() #关闭
2、micropython 1.19.1 解压程序
这部分代码参考upip.py文件。在micropython 1.19.1开源代码中可以找到。
import gc
import uzlib
import upip_utarfile as tarfile
import upip
import os
import time
gc.collect() #这部分占用的资源会比较多,先主动释放一些垃圾
gzdict_sz = 16 + 15
sz = gc.mem_free() + gc.mem_alloc()
print('sz', sz)
if sz <= 65536:
gzdict_sz = 16 + 12
t1 = time.ticks_ms()
f1 = open('logo.tar.gz', 'rb') # url_open(package_url)
try:
f2 = uzlib.DecompIO(f1, gzdict_sz)
f3 = tarfile.TarFile(fileobj=f2)
meta = upip.install_tar(f3, '/file/')
finally:
f1.close()
del f3
del f2
gc.collect()
t2 = time.ticks_ms()
print(f"耗时:{t2-t1} ms")
执行结果:
sz 111168
耗时:4391 ms
Welcome to RT-Thread MicroPython!
3、结果
3.1、原始的文件夹大小168k,压缩打包后44k,esp32解压耗时4.391s。
3.2、解压出来之后会多一个【@PaxHeader】文件,说是win10对压缩文件的处理问题