EC800z解压

解压19K压缩包失败,怎么解决,是因为内存不够,测试3.3k是能解压成功的
解压代码用的是移远的示例,压缩包是.tar.gz格式
import uzlib as zlib

import ql_fs

# unzip_Chic

import log

log.basicConfig(level=log.INFO)

unzip_Chic_log = log.getLogger(“unzip_Chic”)

class FileDecode(object):

def \__init_\_(self, zip_file, parent_dir="/usr/"):

    self.fp = open(zip_file, "rb")

    self.fileData = None

    self.parent_dir = parent_dir



def unzip(self):

    """缓存到内存中"""

    self.fp.seek(10)

    data = self.fp.read()

    self.fileData = zlib.decompress(data, -15)



@classmethod

def \_ascii_trip(cls, data):

    return data.decode('ascii').rstrip('\\0')



@classmethod

def file_size(cls, data):

    """获取真实size数据"""

    size = cls.\_ascii_trip(data)

    if not len(size):

        return 0

    return int(size, 8)



@classmethod

def get_file_name(cls, file_name):

    """获取文件名称"""

    return cls.\_ascii_trip(file_name)



def unpack(self):

    """解压文件"""

    idx = 0

    count = len(self.fileData)

    folder_list = set()

    unzip_Chic_log.info("total_size:" + str(count))

    while idx < count:

        size = self.file_size(self.fileData\[idx + 124:idx + 135\])

        file_name = self.get_file_name(self.fileData\[idx:idx + 100\])

        full_file_name = self.parent_dir + file_name

        if not size:

            if len(full_file_name):

                """文件夹"""

                ql_fs.mkdirs(full_file_name)

                if full_file_name not in folder_list and full_file_name != self.parent_dir:

                    folder_list.add(full_file_name)

                    unzip_Chic_log.info("Folder {} CREATED".format(full_file_name))

            else:

                return

        else:

            begin = idx + 512

            end = idx + 512 + size

            write_data = self.fileData\[begin:end\]

            update_file = open(full_file_name, "wb+")

            update_file.write(write_data)

            update_file.close()

            unzip_Chic_log.info("FILE {} WRITE BYTE BEGIN {} END {}".format(full_file_name, begin, end))

        """ 由于打包过程中会对文件长度不为512整数倍时,会对文件尾部补\\x00操作,故在此将文件尾部填充长度添加到文件长度中, """

        if (size & 0x1ff) != 0:

            size += 512 - (size & 0x1ff)

        idx += 512 + size

    unzip_Chic_log.info("UNPACK SUCCESS")

def unzipstart(appname):

fd = FileDecode("usr/.updater/usr/%s" % appname)

fd.unzip()

fd.unpack()

\# try:

\#     uos.remove("usr/.updater/usr/%s" % appname)

\# except:

\#     pass

检查一下模块内可使用的空间,确保有足够空间解压文件