[Tutor] Unzipping a Zip of folders that have zips within them that I'd like to unzip all at once.

Gregory Lund gnj091405 at gmail.com
Mon Sep 24 04:00:18 CEST 2012


>>> > You're trying to open the directory as if it were a zipfile. You should
>>> > pass in the path to a zipfile not to a folder.
>>>
>>> Agreed, but how do I do that "pass in the path to a zipfile'?
>>> Using an if statement I presume?
>>>
>>> > >
>>>
>>> > > I guess my first issue is to resolve the 'Permission denied' problem.
>>> > > And, I know I need an 'if' statement, somehow...
>>> >
>>> Yes, the permission denied problem seems to be the first real
>>> obstacle, but I can't figure it out.
>>> I tried searching online but everything I found to try, didn't work.
>>
>>
>> The permission error is because you are trying to open a folder as if it
>> were a file. The operating system does not give you permission to do this
>> because it is a nonsensical operation.
>>
>>> > Remove the folder paths from the list of paths.
>>>
>>> How can I remove the folder paths from the list of paths?
>>
>>
>> You can do it with a list comprehension:
>>
>> import os.path
>> paths = [p for p in paths if os.path.isdir(p)]
>
>
> Sorry that should be (note the 'not'):
> paths = [p for p in paths if not os.path.isdir(p)]
>
Ok, but where do I put that?
Sorry Oscar, I don't know where to put it, nor do I know how to use
'paths' once I do that.

I was trying this prior to getting your email about paths...(I put
this after z.close()

for item in zipContents:
    if item(-4) == ('.zip'):
        x = zipfile.Zipfile(item,'r')
        x.extractall()
        x.close()

but, I kept getting a "TypeError: 'str' object is not callable" error.

then I tried

for item in zipContents:
    if item.lower() .endswith(".zip"):
        item.extractall()
        item.close()

but got a "    item.extractall()
AttributeError: 'str' object has no attribute 'extractall'" error

Can't say I'm not trying. :-)
not working, but i'm trying whatever I can.

I greatly appreciate the help Oscar!

Greg


More information about the Tutor mailing list