当前位置:首页 > 项目 > Wpython > 正文内容

micropython 实现tar 文件解包

watrt1年前 (2023-05-31)Wpython3100
import upip_utarfile as tar
import os

def run(src,dest_dir):
  t = tar.TarFile(src)
  if not dest_dir in os.listdir():
    os.mkdir(dest_dir)
  dest_dir=dest_dir+"/"
  prefix=dest_dir
  for i in t:
    i.name=i.name.rstrip('/')
    print(i,i.name)
    i.name=prefix+i.name
    print(i.name)
    if i.type == tar.DIRTYPE:
      try:
        os.mkdir(i.name)
      except OSError as e:
        if e.args[0] != errno.EEXIST and e.args[0] != errno.EISDIR:
          raise e
     
    else:
      f = t.extractfile(i)
      print(i.name)
      copyfileobj(f, open(i.name, "wb+"))

def rmtree(top):
    for path, dirs, files in os.walk(top, False):
        for f in files:
            os.unlink(path + "/" + f)
        os.rmdir(path)

def copyfileobj(src, dest, length=512):
    if hasattr(src, "readinto"):
        buf = bytearray(length)
        while True:
            sz = src.readinto(buf)
            if not sz:
                break
            if sz == length:
                dest.write(buf)
            else:
                b = memoryview(buf)[:sz]
                dest.write(b)
    else:
        while True:
            buf = src.read(length)
            if not buf:
                break
            dest.write(buf)

run("/2.tar","/tt")


run("/2.tar","/tt")  第一参数为解包文件,第二个参数为解包目录

分享给朋友:

相关文章

wpython板子的gui版本已经设计完成

wpython板子的gui版本已经设计完成

这个是已经修改过多次的了。现在是1.6版1、调整旋转编码器为5向开关2、调整LCD的SPI为HSPI(SPI1)为IO_MUX 直接硬件接口不在通过GPIO matrix,理论上能够达到速度80M(待测试)3、调整电池供电芯片为:SPX3819M5解决使用asm1117 3.3 压差不够,电压不能够稳定到3.3的BUG4、留出I2S接口5、调整I2C接口为插座位置。6、调整布线,板子更小了...

wpython_GUI 1.6板子回来了

wpython_GUI 1.6板子回来了

板子打出来了。小的元件已经SMT好了,大的元件我已经自己手焊好了,先给大家看看样板两个LED因为出于成本的原因是单面贴,双面太贵了,而且感觉不重要就先没有焊正面,大体算正常吧,但是也现在了两个BUG,还是缺少经验。1、ESP32的IO36脚和IO39脚,只支持输入模式,而且没有内部上拉,所以要外挂上拉,这点在画板的时间 没有想到。目前使用的是补焊两个电阻补救上(KEY_A、KEY_B)。2、还有一个就是屏的背景使用的是S8050当做背光开关,结果发现在虽然可以过通IO来控制引脚,但是背景电压太低...

micrpython编译javascript版

micrpython编译javascript版

1、首先安装emsdkgit clone https://github.com/emscripten-core/emsdk.git cd <path-to-emsdk> git pull ./emsdk install latest ./emsdk activate latest source ./emsdk_env.sh2、获取micropython源码git clone&...

LVGL_micropython 模拟器

LVGL_micropython 模拟器

在使用micropython编写lvgl界面时有时间非常的麻烦。要在设备上才看得到效果。比较麻烦。npx的GUI-Guider软件中的模拟器给抠出来了单独使用,非常不错。下面是运行实例:import SDL import utime as time import usys as sys import lvgl as lv import lodepng as p...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。