How to compress a folder and all of its sub directories and files into a zip file?
Brian van den Broek
bvande at po-box.mcgill.ca
Tue Jun 28 09:44:12 CEST 2005
could ildg said unto the world upon 28/06/2005 03:29:
> but the file is just stored,
> and not compressed.
> On 6/28/05, could ildg <could.net at gmail.com> wrote:
>>On 6/29/05, Peter Szinek <peter at rt.sk> wrote:
>>>What about this:
>>>from os.path import join
>>>zip = zipfile.ZipFile("myzipfile.zip", 'w')
>>>for root, dirs, files in os.walk('.'):
>>> for fileName in files:
>>>Maybe it zips also the myzipfile.zip ;-)
>>>Probably this is not needed, so an additional test (something like
>>>fileName != 'myfile.zip' would be needed.
>>>could ildg wrote:
>>>>I want to compress a folder and all of its sub files including empty folders
>>>>into a zip file. what's the pythonic way to do this?
>>>>Thanks in advance.
This thread got me to read the relevant docs:
7.18.1 ZipFile Objects
"class ZipFile( file[, mode[, compression]])
Open a ZIP file, where file can be either a path to a file (a
string) or a file-like object. The mode parameter should be 'r' to
read an existing file, 'w' to truncate and write a new file, or 'a' to
append to an existing file. For mode is 'a' and file refers to an
existing ZIP file, then additional files are added to it. If file does
not refer to a ZIP file, then a new ZIP archive is appended to the
file. This is meant for adding a ZIP archive to another file, such as
cat myzip.zip >> python.exe
also works, and at least WinZip can read such files. compression
is the ZIP compression method to use when writing the archive, and
should be ZIP_STORED or ZIP_DEFLATED; unrecognized values will cause
RuntimeError to be raised. If ZIP_DEFLATED is specified but the zlib
module is not available, RuntimeError is also raised. The default is
So, it would appear that compression requires a 3rd party module, not
included in Python (and not present on my Windows box).
I'm presently filing a bug suggesting this be made a touch more
explicit in the zlib docs.
Best to all,
More information about the Python-list