Making Python 2.7 code run with Python 2.6
Question: I have this simply python function that can extract a zip file (platform
independent)

    
    
    def unzip(source, target):
        with zipfile.ZipFile(source , "r") as z:
            z.extractall(target)
        print "Extracted : " + source +  " to: " + target
    

This runs fine with Python 2.7 but fails with Python 2.6:

    
    
    AttributeError: ZipFile instance has no attribute '__exit__':
    

I found this suggestions that an upgrade is required 2.6 -> 2.7
<https://bugs.launchpad.net/horizon/+bug/955994>

But is it possible to port the above code to work with Python 2.6 and still
keep it cross platform?


Answer: What about:

    
    
    import contextlib
    
    def unzip(source, target):
        with contextlib.closing(zipfile.ZipFile(source , "r")) as z:
            z.extractall(target)
        print "Extracted : " + source +  " to: " + target
    

`contextlib.closing` does exactly what the missing `__exit__` method on the
`ZipFile` would be supposed to do. Namely, call the `close` method

