You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
zipfile.ZipFile fails reading a file object in specific version(s) #70460
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee=Noneclosed_at=<Date2016-02-03.09:03:00.554>created_at=<Date2016-02-03.08:48:27.454>labels= ['library', 'type-crash']
title='`zipfile.ZipFile` fails reading a file object in specific version(s)'updated_at=<Date2016-02-03.09:04:02.366>user='https://github.com/starrify'
When passing a file object to zipfile.ZipFile for reading it fails in Python 3.5.1 it fails. While the same code in Python 2.7.11 works.
Also loading that specific file directly from file path works in Python 3.5.1.
(Please see the sample testing code below for details)
[pengyu@GLaDOS tmp]$ echo "test message" > testfile
[pengyu@GLaDOS tmp]$ zip testfile.zip testfile
updating: testfile (stored 0%)
[pengyu@GLaDOS tmp]$ file testfile.zip
testfile.zip: Zip archive data, at least v1.0 to extract
[pengyu@GLaDOS tmp]$ python -c "a = open('testfile.zip'); import zipfile; b = zipfile.ZipFile(a, 'r')"
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python3.5/zipfile.py", line 1026, in __init__self._RealGetContents()
File "/usr/lib/python3.5/zipfile.py", line 1093, in _RealGetContentsraise BadZipFile("File is not a zip file")
zipfile.BadZipFile: File is not a zip file
[pengyu@GLaDOS tmp]$ python2 -c "a = open('testfile.zip'); import zipfile; b = zipfile.ZipFile(a, 'r')"
[pengyu@GLaDOS tmp]$ python -c "import zipfile; b = zipfile.ZipFile('testfile.zip', 'r')"
[pengyu@GLaDOS tmp]$ python --version
Python 3.5.1
[pengyu@GLaDOS tmp]$ python2 --version
Python 2.7.11
I think you are only meant to pass in a “binary” (bytes) file object. Maybe BufferedIOBase, I’m not sure. The documentation doesn’t seem to make this very clear though. Can you suggest an improvement?
Open the file with
a=open("testfile.zip", "rb")
and all should be well :)
starrify commented on Feb 3, 2016
starrifymannequin
MannequinAuthor
More actions
Well I should have noticed that I wasn't using binary mode.. Sorry for the mistake. Closing the issue report.
Activity
starrify commentedon Feb 3, 2016
When passing a file object to
zipfile.ZipFilefor reading it fails in Python 3.5.1 it fails. While the same code in Python 2.7.11 works.Also loading that specific file directly from file path works in Python 3.5.1.
(Please see the sample testing code below for details)
vadmium commentedon Feb 3, 2016
I think you are only meant to pass in a “binary” (bytes) file object. Maybe BufferedIOBase, I’m not sure. The documentation doesn’t seem to make this very clear though. Can you suggest an improvement?
Open the file with
and all should be well :)
starrify commentedon Feb 3, 2016
Well I should have noticed that I wasn't using binary mode.. Sorry for the mistake. Closing the issue report.
starrify commentedon Feb 3, 2016
Oh yes you're right Martin. Thanks for the notice :) (I've closed this ticket before seeing your reply)