[Tutor] RE: how to zip data? (Branimir Petrovic)

John Purser jmpurser at gmail.com
Tue Nov 23 13:21:37 CET 2004


That limitation on Winzip may have been fixed.  The other day I was
having trouble zipping and reading a 10 gig file with the native XP
zipping utility.  It would zip fine but when I tried to extract from
the archive XP complained that it was corrupted.  I downloaded winzip
and had no problems zipping and extracting.

John Purser


On Tue, 23 Nov 2004 15:13:43 +0300, Eri Mendz <erimendz at gmail.com> wrote:
> Hello list,
> 
> I'm trying to understanding this zip code. Can you kindly explain what's
> happening step by step? The try: finally clause is something new. And also
> what does the below code do? I see this always in the codes in this group. I
> seem not to encounter this (yet) in my tutorial reference. TIA
> 
> > if __name__=="__main__":
> 
> --
> Regards,
> erimendz
> Gmail Google Mail
> 
> >> -----Original Message-----
> >> From: Ramkumar Parimal Alagan [mailto:ramster6 at gmail.com]
> 
> [snip]
> >> zip_command = "zip -qr '%s' %s" % (target, ' '.join(source))
> >>
> >> if os.system(zip_command) == 0:
> >>     print 'Successful backup to', target
> >> else:
> >>     print 'Backup FAILED'
> >>
> 
> > """No such a thing as "zip" command/utility on Windows, but using
> > Python's standard library you could build your own....
> >
> > Example below shows how to gz-ip a file (if you wonder why .gz and
> > not .zip: gzip library compresses as good and has no upper limit
> > on how large file it can process).
> >
> > If below example looks too involving, you could purchase WinZip
> > and get command line utility that will zip files for you via
> > os.system call (but beware - WinZip can not zip/unzip files larger
> > than 4 GB)
> >
> > Branimir
> > """
> >
> > ######################################################################
> > #   FileName    gzDemo.py
> > ######################################################################
> >
> > import exceptions, os, re, gzip
> >
> > def gzipIt(filetogzip, gzippedname=None):
> >     """Will GZIP file whose path is described by 'filetogzip' string.
> >
> >     Parameters:
> >         filetogzip, gzippedname - STRING
> >
> >     By default (if 'gzippedname' not supplied):,
> >         - will gunzip 'filetogzip' to same folder with the source file,
> >         - will add '.gz' suffix to file name
> >         - will remove source file after successful gzipping.
> >
> >     If 'gzippedname' is supplied, the source ('filetogzip') is not removed.
> >
> >     Works like a charm although is 20% slower than GNU's gunzip utility.
> >     """
> >
> >     chunksize=1048576
> >     removesource = False
> >
> >     if not gzippedname:
> >         gzippedname = filetogzip + r'.gz'
> >         removesource = True
> >
> >     inputfile = file(filetogzip, r'rb', chunksize)
> >     try:
> >         chunkdata = inputfile.read(chunksize)
> >         gzoutfile = gzip.open(gzippedname, mode='wb', compresslevel=5)
> >         try:
> >             while chunkdata:
> >                 gzoutfile.write(chunkdata)
> >                 chunkdata = inputfile.read(chunksize)
> >         finally:
> >             gzoutfile.close()
> >     finally:
> >         inputfile.close()
> >
> >     if removesource: os.remove(filetogzip)
> >
> >
> > def gunzipIt(filetogunzip, gunzippedname=None):
> >     """Will GUNZIP file whose path is described by 'filetogzip' string.
> >
> >     Parameters:
> >         filetogunzip, gunzippedname - STRING
> >
> >     By default (if 'gunzippedname' not supplied):,
> >         - will gunzip 'filetogunzip' to same folder with the source file,
> >         - will strip '.gz' from file name suffix and
> >         - will remove source file after successful gunzipping.
> >
> >     If 'gunzippedname' is supplied, the source ('filetogunzip') is not
> > removed.
> >
> >     Works like a charm although is 30% slower than GNU's gunzip utility.
> >     """
> >
> >     chunksize=8192
> >     removesource = False
> >
> >     if not gunzippedname:
> >         # strip '.gz' off the end of gzippedname
> >         gunzippedname = re.sub('(\.(g|G)(z|Z))', '', filetogunzip)
> >         removesource = True
> >
> >     fgunzip = gzip.open(filetogunzip, mode='rb')
> >     try:
> >         chunkdata = fgunzip.read(chunksize)
> >         foutput = file(gunzippedname, r'wb', chunksize)
> >         try:
> >             while chunkdata:
> >                 foutput.write(chunkdata)
> >                 chunkdata = fgunzip.read(chunksize)
> >         finally:
> >             foutput.close()
> >     finally:
> >         fgunzip.close()
> >
> >     if removesource: os.remove(filetogunzip)
> >
> >
> >
> >
> > if __name__=="__main__":
> >
> >     try:
> >         # 1st run will "do-it:"
> >         toZip = r'C:\_b\textStuff.txt'
> >         gzipIt(toZip)
> >     except exceptions.IOError:
> >         # 2nd run will "un-do-it":
> >         try:
> >             toUnZip = r'C:\_b\textStuff.txt.gz'
> >             gunzipIt(toUnZip)
> >         except exceptions.IOError:
> >              pass
> >
> >
> 
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
>


More information about the Tutor mailing list