コード例 #1
0
def parse_zip_archive(filename, sha256sum=False):
    entries = list()
    with zipfile.ZipFile(filename, 'r') as afile:
        for ainfo in afile.infolist():
            parsed = parse_archive_info(ainfo, 'zip')
            parsed['bytesize'] = ainfo.file_size
            if sha256sum:
                fileobj = afile.open(ainfo)
                sha256sum = get_sha256sum(fileobj)
                parsed['sha256sum'] = sha256sum
            entries.append(parsed)
    return entries
コード例 #2
0
def get_extracted_info(parent_dir, fileinfo, sha256sum=False):
    parent_dir = path(parent_dir)
    filename = fileinfo.filename
    try:
        extracted_name = path(parent_dir, filename)
    except UnicodeEncodeError:
        print "UnicodeEncodeError with %s" % filename
        filename = filename.encode('utf8')
        extracted_name = path(parent_dir, filename)
        # make sure extracted_name exists
        if not extracted_name.isfile():
            raise RuntimeError, "%s is not a file" % extracted_name
    ifile = file(extracted_name)
    ifile.seek(0, 2)
    file_size = ifile.tell()
    ifile.seek(0)
    cksum = None
    if sha256sum:
        cksum = get_sha256sum(ifile)
    return file_size, cksum