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
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