The gzip module... neverending story
Andrew M. Kuchling
akuchlin at mems-exchange.org
Tue Apr 11 17:05:45 CEST 2000
"FrancescO" <francesco.contini at tiscalinet.it> writes:
> I have, another questions!!
> How can I zip i list of files? (i have done it, but... the files can't be
> readed from winzip and gunzip...)
First, if you're trying to generate PKZIP-style .zip archives, the
gzip module is the wrong one. Jim Ahlstrom's zipfile.py, which
someone else posted a pointer to, is the right module to use in that
case. Since you mention gunzip, I assume that you really do want
> Wich is the correct usage of the fileobj (4th parameters in the
> gzip.GzipFile.. explain..:
> GzipFile ([filename[, mode[, compresslevel[, fileobj]]]]) )?
Did you look at the documentation for the module, at
http://www.python.org/doc/lib/module-gzip.html ? It explains:
The new class instance is based on fileobj, which can be a
regular file, a StringIO object, or any other object which
simulates a file. It defaults to None, in which case filename
is opened to provide a file object.
It's not clear what you're trying to do: compress a list of files into
individual compressed files, or compress a bunch of files into one big
huge file. To do the former, the code would be something like (untested):
filenames = ['a.txt', 'b.txt', 'c.exe']
for f in filenames:
input = open(f, 'rb')
output = gzip.open(f + '.gz', 'wb')
# Copy the contents of the input file
chunk = input.read(1024)
if chunk == "": break
output.write( chunk )
input.close() ; output.close()
gzip doesn't support storing multiple files, though you can
concatenate several gzipped files; the decompressed data would then be
the contents of the original files in one big file.
A.M. Kuchling http://starship.python.net/crew/amk/
Desire was right. Also untrustworthy, acerbic, dangerous, and cruel. But
right. You would have been better off leaving well enough alone.
-- Destruction, in SANDMAN #48: "Brief Lives:8"
More information about the Python-list