mirror of
https://github.com/python/cpython.git
synced 2025-12-04 00:30:19 +00:00
Merged revisions 67946 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r67946 | antoine.pitrou | 2008-12-27 16:43:12 +0100 (sam., 27 déc. 2008) | 4 lines Issue #4756: zipfile.is_zipfile() now supports file-like objects. Patch by Gabriel Genellina. ........
This commit is contained in:
parent
d88e8fab14
commit
db5fe66731
4 changed files with 60 additions and 14 deletions
|
|
@ -130,18 +130,30 @@ _CD64_NUMBER_ENTRIES_TOTAL = 7
|
|||
_CD64_DIRECTORY_SIZE = 8
|
||||
_CD64_OFFSET_START_CENTDIR = 9
|
||||
|
||||
def is_zipfile(filename):
|
||||
"""Quickly see if file is a ZIP file by checking the magic number."""
|
||||
def _check_zipfile(fp):
|
||||
try:
|
||||
fpin = io.open(filename, "rb")
|
||||
endrec = _EndRecData(fpin)
|
||||
fpin.close()
|
||||
if endrec:
|
||||
return True # file has correct magic number
|
||||
if _EndRecData(fp):
|
||||
return True # file has correct magic number
|
||||
except IOError:
|
||||
pass
|
||||
return False
|
||||
|
||||
def is_zipfile(filename):
|
||||
"""Quickly see if a file is a ZIP file by checking the magic number.
|
||||
|
||||
The filename argument may be a file or file-like object too.
|
||||
"""
|
||||
result = False
|
||||
try:
|
||||
if hasattr(filename, "read"):
|
||||
result = _check_zipfile(fp=filename)
|
||||
else:
|
||||
with open(filename, "rb") as fp:
|
||||
result = _check_zipfile(fp)
|
||||
except IOError:
|
||||
pass
|
||||
return result
|
||||
|
||||
def _EndRecData64(fpin, offset, endrec):
|
||||
"""
|
||||
Read the ZIP64 end-of-archive records and use that to update endrec
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue