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