Luis Zarrabeitia wrote:
Quoting MRAB <goo...@mrabarnett.plus.com>:
Steven D'Aprano wrote:
A quick and dirty solution would be something like this:

zf = zipfile.ZipFile('Archive.zip')
for name in zf.namelist():
    open(name, 'w').write(zf.read(name))

You might want to specify an output folder (and the data might be binary
too):

zf = zipfile.ZipFile('Archive.zip')
for name in zf.namelist():
     open(os.path.join(output_folder, name), 'wb').write(zf.read(name))


Question here... wouldn't you also need to create all the intermediate folders
from "output_folder" to "output_folder/name" (assuming that 'name' has several
path parts in it)? Is there any elegant way to do it?
Of course there is; this is Python! :-)

> (is there any way to make os.mkdir behave like mkdir -p?)
>

Perhaps:

zf = zipfile.ZipFile('Archive.zip')
for name in zf.namelist():
    new_path = os.path.join(output_folder, name)
    data = zf.read(name)
    try:
        open(new_path, 'wb').write(data)
    except IOError:
        # Create intermediate folders and try again
        os.makedirs(os.path.dirname(new_path))
        open(new_path, 'wb').write(data)
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to