Hello all, A newbie here. I was wondering why the following fails on Python 2.6.2 (r262:71605) on win32. Am I doing something inappropriate?
Interestingly, it works in 3.1, but would like to also get it working in 2.6. Thanks in advance, --Matt import io import shutil import tempfile import zipfile with tempfile.TemporaryFile() as f: # (Real code retrieves archive via urllib2.urlopen().) zip = zipfile.ZipFile(f, mode='w') zip.writestr('unknowndir/src.txt', 'Hello, world!') zip.close(); # (Pretend we just downloaded the zip file.) f.seek(0) # Result of urlopen() is not seekable, but ZipFile requires a # seekable file. Work around this by copying the file into a # memory stream. with io.BytesIO() as memio: shutil.copyfileobj(f, memio) zip = zipfile.ZipFile(file=memio) # Can't use zip.extract(), because I want to ignore paths # within archive. src = zip.open('unknowndir/src.txt') with open('dst.txt', mode='wb') as dst: shutil.copyfileobj(src, dst) The last line throws an Error: Traceback (most recent call last): File "test.py", line 25, in <module> shutil.copyfileobj(src, dst) File "C:\Python26\lib\shutil.py", line 27, in copyfileobj buf = fsrc.read(length) File "C:\Python26\lib\zipfile.py", line 594, in read bytes = self.fileobj.read(bytesToRead) TypeError: integer argument expected, got 'long' -- http://mail.python.org/mailman/listinfo/python-list