Making Python 2.7 Code Run With Python 2.6
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(t
Solution 1:
What about:
import contextlib
defunzip(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
Solution 2:
zipfile module Changed in python version 2.7.1:
- If the file is created with mode 'a' or 'w' and then closed without adding any files to the archive, the appropriate ZIP structures for an empty archive will be written to the file.
- ZipFile is also a context manager and therefore supports the with statement.
I solved same problem by not using context manager "with" for python 2.6
newzip = Nonetry:
newzip = zipfile.ZipFile(_file + ".zip", "w", zipfile.ZIP_DEFLATED)
newzip.write(_file)
finally:
newzip.close()
The with context manager protects against resource leaks, so in Python 2.6 I would at least still recommend a try/finally to close the resource.
Post a Comment for "Making Python 2.7 Code Run With Python 2.6"