Extracting file from zip archive in Python 2.6.1
Gabriel Genellina
gagsl-py2 at yahoo.com.ar
Wed Feb 4 01:16:06 EST 2009
En Wed, 04 Feb 2009 00:36:40 -0200, Brandon Taylor
<btaylordesign at gmail.com> escribió:
> On Feb 3, 1:16 pm, Brandon Taylor <btaylordes... at gmail.com> wrote:
>> On Feb 3, 9:45 am, "Gabriel Genellina" <gagsl-... at yahoo.com.ar> wrote:
>> > En Tue, 03 Feb 2009 05:31:24 -0200, Brandon Taylor
>> > <btaylordes... at gmail.com> escribió:
>> > > zip_file.extract(zip_name + '/' + thumbnail_image, thumbnail_path)
>> > > What is happening is that the extract method is creating a folder >
>> > with
>> > > the name of 'zip_name' and extracting the files to it. Example:
>> > extract will create all directories in member name. Use open instead:
>> > with zip_file.open(zip_name + '/' + thumbnail_image) as source:
>> > with open(os.path.join(thumbnail_path, thumbnail_image), "wb") as
>> > target:
>> > shutil.copyfileobj(source, target)
> Ok, the first thing I needed to do was add:
>
> from __future__ import with_statement at the beginning of my file
That should not be necesary with your Python version (2.6.1 isn't it?)
> with zip_file.open(zip_name + '/' + thumbnail_image) as source:
> with open(os.path.join(thumbnail_path,
> thumbnail_image), 'wb') as target:
> shutil.copyfileobj(source, target)
>
> Returns an error on the first line:
>
> ZipExtFile instance has no attribute '__exit__'
Ouch, sorry, this new feature will appear in the not-yet-released 2.7
version...
Try this instead:
source = zip_file.open(zip_name + '/' + thumbnail_image)
try:
with open(os.path.join(thumbnail_path, thumbnail_image), 'wb') as target:
shutil.copyfileobj(source, target)
finally:
source.close()
--
Gabriel Genellina
More information about the Python-list
mailing list