Welcome to Stratos!
import packer; obj = ("hola",1234,open("fichero.txt").readlines()); packer.save(obj,"fichero.dat");
import pickleimport gzipdef save(object, filename, bin = 1): """Saves a compressed object to disk """ file = gzip.GzipFile(filename, 'wb') file.write(pickle.dumps(object, bin)) file.close()def load(filename): """Loads a compressed object from disk """ file = gzip.GzipFile(filename, 'rb') buffer = "" while 1: data = file.read() if data == "": break buffer += data object = pickle.loads(buffer) file.close() return objectdef compress(filename,so): file = open(filename, 'rb') o = gzip.GzipFile(so, 'wb') buffer = "" while 1: data = file.read() if data == "": break o.write(data); file.close() o.close();def decompress(f,so): o = open(so, 'wb') file = gzip.GzipFile(f, 'rb') buffer = "" while 1: data = file.read() if data == "": break o.write(data); file.close() o.close()class pak: def __init__(self,file): self.file = file; self.tosave = []; def loadpak(self,dir = "."): self.obj = {}; obj = load(self.file); print obj for x in obj: if(x[0] == "file"): print "extracting ... %s"% dir +"\"+x[1]; f = open(dir+"\"+x[1],"w"); f.write(x[2]); f.close(); else: if(x[0]=="obj"): if(not self.obj.has_key(x[1])): self.obj[x[1]]= [x[2]]; else: self.obj[x[1]].append(x[2]); return self.obj; def getobj(self): return self.obj def __end__(self): self.savepak(); def savepak(self): save(self.tosave,self.file); def addfiles(self,l): for x in l: self.addfile(x); def addfile(self,file): import string; i=string.rfind(file,"\"); if(i<0): _file = file; else: _file = file[i+1:]; print "inflating ... %s"%_file; self.tosave.append(("file",_file,open(file,"r").read())); def addobject(self,o,name="undef"): self.tosave.append(("obj",name,o));if __name__ == '__main__': o = pak("tmp.pak"); print o.loadpak();