Python zipfile.is_zipfile() Examples
The following are 30
code examples of zipfile.is_zipfile().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
zipfile
, or try the search function
.
Example #1
Source File: test_upload_docs.py From pledgeservice with Apache License 2.0 | 6 votes |
def test_create_zipfile(self): # Test to make sure zipfile creation handles common cases. # This explicitly includes a folder containing an empty folder. dist = Distribution() cmd = upload_docs(dist) cmd.upload_dir = self.upload_dir cmd.target_dir = self.upload_dir tmp_dir = tempfile.mkdtemp() tmp_file = os.path.join(tmp_dir, 'foo.zip') try: zip_file = cmd.create_zipfile(tmp_file) assert zipfile.is_zipfile(tmp_file) zip_file = zipfile.ZipFile(tmp_file) # woh... assert zip_file.namelist() == ['index.html'] zip_file.close() finally: shutil.rmtree(tmp_dir)
Example #2
Source File: test_zipfile.py From BinderFilter with MIT License | 6 votes |
def test_is_zip_valid_file(self): """Check that is_zipfile() correctly identifies zip files.""" # - passing a filename with zipfile.ZipFile(TESTFN, mode="w") as zipf: zipf.writestr("foo.txt", "O, for a Muse of Fire!") chk = zipfile.is_zipfile(TESTFN) self.assertTrue(chk) # - passing a file object with open(TESTFN, "rb") as fp: chk = zipfile.is_zipfile(fp) self.assertTrue(chk) fp.seek(0, 0) zip_contents = fp.read() # - passing a file-like object fp = StringIO() fp.write(zip_contents) chk = zipfile.is_zipfile(fp) self.assertTrue(chk) fp.seek(0, 0) chk = zipfile.is_zipfile(fp) self.assertTrue(chk)
Example #3
Source File: get_snaps.py From snapy with MIT License | 6 votes |
def process_snap(s, snap, path, quiet=False, unzip=False): filename = '{0}_{1}.{2}'.format(snap['sender'], snap['id'], get_file_extension(snap['media_type'])) abspath = os.path.abspath(os.path.join(path, filename)) if os.path.isfile(abspath): return data = s.get_blob(snap['id']) if data is None: return with open(abspath, 'wb') as f: f.write(data) if not quiet: print('Saved: {0}'.format(abspath)) if is_zipfile(abspath) and unzip: unzip_snap_mp4(abspath, quiet)
Example #4
Source File: test_zipfile.py From BinderFilter with MIT License | 6 votes |
def test_is_zip_erroneous_file(self): """Check that is_zipfile() correctly identifies non-zip files.""" # - passing a filename with open(TESTFN, "w") as fp: fp.write("this is not a legal zip file\n") chk = zipfile.is_zipfile(TESTFN) self.assertFalse(chk) # - passing a file object with open(TESTFN, "rb") as fp: chk = zipfile.is_zipfile(fp) self.assertTrue(not chk) # - passing a file-like object fp = StringIO() fp.write("this is not a legal zip file\n") chk = zipfile.is_zipfile(fp) self.assertTrue(not chk) fp.seek(0, 0) chk = zipfile.is_zipfile(fp) self.assertTrue(not chk)
Example #5
Source File: compress.py From CAMISIM with Apache License 2.0 | 6 votes |
def get_compression_type(self, file_path): """ Return compression type assumed by filename @param file_path: Path to file @type file_path: str | unicode @return: compression type, None if no compression @rtype: str | None """ assert isinstance(file_path, basestring) filename, extension = os.path.splitext(file_path) if extension == ".zip" and not zipfile.is_zipfile(file_path): return None if extension in self._file_extensions_compression: return self._file_extensions_compression[extension] else: return None
Example #6
Source File: zip.py From oss-ftp with MIT License | 6 votes |
def find_package(self, package): for path in self.paths(): full = os.path.join(path, package) if os.path.exists(full): return package, full if not os.path.isdir(path) and zipfile.is_zipfile(path): zip = zipfile.ZipFile(path, 'r') try: zip.read(os.path.join(package, '__init__.py')) except KeyError: pass else: zip.close() return package, full zip.close() ## FIXME: need special error for package.py case: raise InstallationError( 'No package with the name %s found' % package)
Example #7
Source File: backup.py From ideascube with GNU Affero General Public License v3.0 | 6 votes |
def load(cls, file_): name = os.path.basename(file_.name) backup = Backup(name) with open(backup.path, mode='wb') as f: try: for chunk in file_.chunks(): f.write(chunk) except AttributeError: # file_ as no chunks, # read without them. while True: content = file_.read(4096) if not content: break f.write(content) if not ((name.endswith('.zip') and zipfile.is_zipfile(backup.path)) or tarfile.is_tarfile(backup.path) ): os.unlink(backup.path) raise ValueError(_("Not a {} file").format( 'zip' if name.endswith('.zip') else 'tar')) return backup
Example #8
Source File: test_zipfile.py From ironpython2 with Apache License 2.0 | 6 votes |
def test_is_zip_valid_file(self): """Check that is_zipfile() correctly identifies zip files.""" # - passing a filename with zipfile.ZipFile(TESTFN, mode="w") as zipf: zipf.writestr("foo.txt", "O, for a Muse of Fire!") chk = zipfile.is_zipfile(TESTFN) self.assertTrue(chk) # - passing a file object with open(TESTFN, "rb") as fp: chk = zipfile.is_zipfile(fp) self.assertTrue(chk) fp.seek(0, 0) zip_contents = fp.read() # - passing a file-like object fp = StringIO() fp.write(zip_contents) chk = zipfile.is_zipfile(fp) self.assertTrue(chk) fp.seek(0, 0) chk = zipfile.is_zipfile(fp) self.assertTrue(chk)
Example #9
Source File: test_zipfile.py From ironpython2 with Apache License 2.0 | 6 votes |
def test_is_zip_erroneous_file(self): """Check that is_zipfile() correctly identifies non-zip files.""" # - passing a filename with open(TESTFN, "w") as fp: fp.write("this is not a legal zip file\n") chk = zipfile.is_zipfile(TESTFN) self.assertFalse(chk) # - passing a file object with open(TESTFN, "rb") as fp: chk = zipfile.is_zipfile(fp) self.assertTrue(not chk) # - passing a file-like object fp = StringIO() fp.write("this is not a legal zip file\n") chk = zipfile.is_zipfile(fp) self.assertTrue(not chk) fp.seek(0, 0) chk = zipfile.is_zipfile(fp) self.assertTrue(not chk)
Example #10
Source File: downloader.py From audiomate with MIT License | 6 votes |
def _extract_file(self, file_path, target_folder): ark_type = self.ark_type if self.ark_type == ArkType.AUTO: if tarfile.is_tarfile(file_path): ark_type = ArkType.TAR elif zipfile.is_zipfile(file_path): ark_type = ArkType.ZIP if ark_type == ArkType.TAR: download.extract_tar(file_path, target_folder) elif ark_type == ArkType.ZIP: download.extract_zip(file_path, target_folder) else: raise ValueError( 'Unrecognized archive type (Only zip/tar supported)!' )
Example #11
Source File: test_views.py From ideascube with GNU Affero General Public License v3.0 | 6 votes |
def test_export_book_notices(staffapp, monkeypatch): book1 = BookFactory(isbn="123456", name="my book title") name_utf8 = u'النبي (كتاب)' BookFactory(isbn="654321", name=name_utf8) monkeypatch.setattr(BookExport, 'get_filename', lambda s: 'myfilename') resp = staffapp.get(reverse('library:book_export')) assert 'myfilename.zip' in resp['Content-Disposition'] content = ContentFile(resp.content) assert zipfile.is_zipfile(content) archive = zipfile.ZipFile(content) cover_name = '{}.jpg'.format(book1.pk) assert cover_name in archive.namelist() assert 'myfilename.csv' in archive.namelist() assert len(archive.namelist()) == 3 csv_content = archive.open('myfilename.csv').read().decode('utf-8') assert csv_content.startswith( 'isbn,authors,serie,name,subtitle,description,publisher,section,lang,' 'cover,tags\r\n') assert "my book title" in csv_content assert cover_name in csv_content assert name_utf8 in csv_content
Example #12
Source File: ooxml.py From msoffcrypto-tool with MIT License | 6 votes |
def __init__(self, file): self.format = "ooxml" file.seek(0) # TODO: Investigate the effect (required for olefile.isOleFile) # olefile cannot process non password protected ooxml files. # TODO: this code is duplicate of OfficeFile(). Merge? if olefile.isOleFile(file): ole = olefile.OleFileIO(file) self.file = ole with self.file.openstream('EncryptionInfo') as stream: self.type, self.info = _parseinfo(stream) logger.debug("OOXMLFile.type: {}".format(self.type)) self.secret_key = None if self.type == 'agile': # TODO: Support aliases? self.keyTypes = ('password', 'private_key', 'secret_key') elif self.type == 'standard': self.keyTypes = ('password', 'secret_key') elif self.type == 'extensible': pass elif zipfile.is_zipfile(file): self.file = file self.type, self.info = None, None self.secret_key = None else: raise Exception("Unsupported file format")
Example #13
Source File: registry.py From aumfor with GNU General Public License v3.0 | 5 votes |
def walkzip(self, path): """Walks a path independent of whether it includes a zipfile or not""" if os.path.exists(path) and os.path.isdir(path): for dirpath, _dirnames, filenames in os.walk(path): for filename in filenames: # Run through files as we always used to yield os.path.join(dirpath[len(path) + len(os.path.sep):], filename) else: index = -1 zippath = None while path.find(os.path.sep, index + 1) > -1: index = path.find(os.path.sep, index + 1) if zipfile.is_zipfile(path[:index]): zippath = path[:index] break else: if zipfile.is_zipfile(path): zippath = path # Now yield the files if zippath: zipf = zipfile.ZipFile(zippath) prefix = path[len(zippath):].strip(os.path.sep) # If there's a prefix, ensure it ends in a slash if len(prefix): prefix += os.path.sep for fn in zipf.namelist(): # Zipfiles seem to always list contents using / as their separator fn = fn.replace('/', os.path.sep) if fn.startswith(prefix) and not fn.endswith(os.path.sep): # We're a file in the zipfile yield fn[len(prefix):]
Example #14
Source File: dsplcheck.py From dspl with BSD 3-Clause "New" or "Revised" License | 5 votes |
def GetInputFilePath(input_file_path): """Parse the input file path, extracting a zip file if necessary. Args: input_file_path: String path to dsplcheck input file Returns: Dictionary containing final XML file path (post-extraction) and directory into which zip was extracted (or '' if input was not a zip). """ if zipfile.is_zipfile(input_file_path): # Extract files to temporary directory and search for dataset XML zip_dir = tempfile.mkdtemp() zip_file = zipfile.ZipFile(input_file_path, 'r') zip_file.extractall(zip_dir) xml_file_paths = [] for (dirpath, unused_dirnames, filenames) in os.walk(zip_dir): for file_name in filenames: if file_name[-4:] == '.xml': xml_file_paths.append(os.path.join(dirpath, file_name)) if not xml_file_paths: print('Error: zip does not have any XML files') sys.exit(2) elif len(xml_file_paths) > 1: print('Error: zip contains multiple XML files') sys.exit(2) else: xml_file_path = xml_file_paths[0] zip_file.close() else: xml_file_path = input_file_path zip_dir = '' return {'xml_file_path': xml_file_path, 'zip_dir': zip_dir}
Example #15
Source File: shutil.py From FuYiSpider with Apache License 2.0 | 5 votes |
def _unpack_zipfile(filename, extract_dir): """Unpack zip `filename` to `extract_dir` """ try: import zipfile except ImportError: raise ReadError('zlib not supported, cannot unpack this archive.') if not zipfile.is_zipfile(filename): raise ReadError("%s is not a zip file" % filename) zip = zipfile.ZipFile(filename) try: for info in zip.infolist(): name = info.filename # don't extract absolute paths or ones with .. in them if name.startswith('/') or '..' in name: continue target = os.path.join(extract_dir, *name.split('/')) if not target: continue _ensure_directory(target) if not name.endswith('/'): # file data = zip.read(info.filename) f = open(target, 'wb') try: f.write(data) finally: f.close() del data finally: zip.close()
Example #16
Source File: misc.py From FuYiSpider with Apache License 2.0 | 5 votes |
def unpack_file(filename, location, content_type, link): filename = os.path.realpath(filename) if (content_type == 'application/zip' or filename.lower().endswith(ZIP_EXTENSIONS) or zipfile.is_zipfile(filename)): unzip_file( filename, location, flatten=not filename.endswith('.whl') ) elif (content_type == 'application/x-gzip' or tarfile.is_tarfile(filename) or filename.lower().endswith( TAR_EXTENSIONS + BZ2_EXTENSIONS + XZ_EXTENSIONS)): untar_file(filename, location) elif (content_type and content_type.startswith('text/html') and is_svn_page(file_contents(filename))): # We don't really care about this from pip._internal.vcs.subversion import Subversion Subversion('svn+' + link.url).unpack(location) else: # FIXME: handle? # FIXME: magic signatures? logger.critical( 'Cannot unpack file %s (downloaded from %s, content-type: %s); ' 'cannot detect archive format', filename, location, content_type, ) raise InstallationError( 'Cannot determine archive format of %s' % location )
Example #17
Source File: shutil.py From FuYiSpider with Apache License 2.0 | 5 votes |
def _unpack_zipfile(filename, extract_dir): """Unpack zip `filename` to `extract_dir` """ try: import zipfile except ImportError: raise ReadError('zlib not supported, cannot unpack this archive.') if not zipfile.is_zipfile(filename): raise ReadError("%s is not a zip file" % filename) zip = zipfile.ZipFile(filename) try: for info in zip.infolist(): name = info.filename # don't extract absolute paths or ones with .. in them if name.startswith('/') or '..' in name: continue target = os.path.join(extract_dir, *name.split('/')) if not target: continue _ensure_directory(target) if not name.endswith('/'): # file data = zip.read(info.filename) f = open(target, 'wb') try: f.write(data) finally: f.close() del data finally: zip.close()
Example #18
Source File: misc.py From FuYiSpider with Apache License 2.0 | 5 votes |
def unpack_file(filename, location, content_type, link): filename = os.path.realpath(filename) if (content_type == 'application/zip' or filename.lower().endswith(ZIP_EXTENSIONS) or zipfile.is_zipfile(filename)): unzip_file( filename, location, flatten=not filename.endswith('.whl') ) elif (content_type == 'application/x-gzip' or tarfile.is_tarfile(filename) or filename.lower().endswith( TAR_EXTENSIONS + BZ2_EXTENSIONS + XZ_EXTENSIONS)): untar_file(filename, location) elif (content_type and content_type.startswith('text/html') and is_svn_page(file_contents(filename))): # We don't really care about this from pip._internal.vcs.subversion import Subversion Subversion('svn+' + link.url).unpack(location) else: # FIXME: handle? # FIXME: magic signatures? logger.critical( 'Cannot unpack file %s (downloaded from %s, content-type: %s); ' 'cannot detect archive format', filename, location, content_type, ) raise InstallationError( 'Cannot determine archive format of %s' % location )
Example #19
Source File: ooxml.py From msoffcrypto-tool with MIT License | 5 votes |
def decrypt(self, ofile, verify_integrity=False): if self.type == 'agile': with self.file.openstream('EncryptedPackage') as stream: if verify_integrity: verified = ECMA376Agile.verify_integrity( self.secret_key, self.info['keyDataSalt'], self.info['keyDataHashAlgorithm'], self.info['keyDataBlockSize'], self.info['encryptedHmacKey'], self.info['encryptedHmacValue'], stream, ) if not verified: raise Exception('Payload integrity verification failed') obuf = ECMA376Agile.decrypt( self.secret_key, self.info['keyDataSalt'], self.info['keyDataHashAlgorithm'], stream ) ofile.write(obuf) elif self.type == 'standard': with self.file.openstream('EncryptedPackage') as stream: obuf = ECMA376Standard.decrypt(self.secret_key, stream) ofile.write(obuf) # If the file is successfully decrypted, there must be a valid OOXML file, i.e. a valid zip file if not zipfile.is_zipfile(io.BytesIO(obuf)): raise Exception("The file could not be decrypted with this password")
Example #20
Source File: __init__.py From kobo-predict with BSD 2-Clause "Simplified" License | 5 votes |
def unpack_file(filename, location, content_type, link): filename = os.path.realpath(filename) if (content_type == 'application/zip' or filename.lower().endswith(ZIP_EXTENSIONS) or zipfile.is_zipfile(filename)): unzip_file( filename, location, flatten=not filename.endswith('.whl') ) elif (content_type == 'application/x-gzip' or tarfile.is_tarfile(filename) or filename.lower().endswith( TAR_EXTENSIONS + BZ2_EXTENSIONS + XZ_EXTENSIONS)): untar_file(filename, location) elif (content_type and content_type.startswith('text/html') and is_svn_page(file_contents(filename))): # We don't really care about this from pip.vcs.subversion import Subversion Subversion('svn+' + link.url).unpack(location) else: # FIXME: handle? # FIXME: magic signatures? logger.critical( 'Cannot unpack file %s (downloaded from %s, content-type: %s); ' 'cannot detect archive format', filename, location, content_type, ) raise InstallationError( 'Cannot determine archive format of %s' % location )
Example #21
Source File: shutil.py From kobo-predict with BSD 2-Clause "Simplified" License | 5 votes |
def _unpack_zipfile(filename, extract_dir): """Unpack zip `filename` to `extract_dir` """ try: import zipfile except ImportError: raise ReadError('zlib not supported, cannot unpack this archive.') if not zipfile.is_zipfile(filename): raise ReadError("%s is not a zip file" % filename) zip = zipfile.ZipFile(filename) try: for info in zip.infolist(): name = info.filename # don't extract absolute paths or ones with .. in them if name.startswith('/') or '..' in name: continue target = os.path.join(extract_dir, *name.split('/')) if not target: continue _ensure_directory(target) if not name.endswith('/'): # file data = zip.read(info.filename) f = open(target, 'wb') try: f.write(data) finally: f.close() del data finally: zip.close()
Example #22
Source File: shutil.py From kobo-predict with BSD 2-Clause "Simplified" License | 5 votes |
def _unpack_zipfile(filename, extract_dir): """Unpack zip `filename` to `extract_dir` """ try: import zipfile except ImportError: raise ReadError('zlib not supported, cannot unpack this archive.') if not zipfile.is_zipfile(filename): raise ReadError("%s is not a zip file" % filename) zip = zipfile.ZipFile(filename) try: for info in zip.infolist(): name = info.filename # don't extract absolute paths or ones with .. in them if name.startswith('/') or '..' in name: continue target = os.path.join(extract_dir, *name.split('/')) if not target: continue _ensure_directory(target) if not name.endswith('/'): # file data = zip.read(info.filename) f = open(target, 'wb') try: f.write(data) finally: f.close() del data finally: zip.close()
Example #23
Source File: misc.py From Python24 with MIT License | 5 votes |
def unpack_file(filename, location, content_type, link): filename = os.path.realpath(filename) if (content_type == 'application/zip' or filename.lower().endswith(ZIP_EXTENSIONS) or zipfile.is_zipfile(filename)): unzip_file( filename, location, flatten=not filename.endswith('.whl') ) elif (content_type == 'application/x-gzip' or tarfile.is_tarfile(filename) or filename.lower().endswith( TAR_EXTENSIONS + BZ2_EXTENSIONS + XZ_EXTENSIONS)): untar_file(filename, location) elif (content_type and content_type.startswith('text/html') and is_svn_page(file_contents(filename))): # We don't really care about this from pip._internal.vcs.subversion import Subversion Subversion('svn+' + link.url).unpack(location) else: # FIXME: handle? # FIXME: magic signatures? logger.critical( 'Cannot unpack file %s (downloaded from %s, content-type: %s); ' 'cannot detect archive format', filename, location, content_type, ) raise InstallationError( 'Cannot determine archive format of %s' % location )
Example #24
Source File: shutil.py From Python24 with MIT License | 5 votes |
def _unpack_zipfile(filename, extract_dir): """Unpack zip `filename` to `extract_dir` """ try: import zipfile except ImportError: raise ReadError('zlib not supported, cannot unpack this archive.') if not zipfile.is_zipfile(filename): raise ReadError("%s is not a zip file" % filename) zip = zipfile.ZipFile(filename) try: for info in zip.infolist(): name = info.filename # don't extract absolute paths or ones with .. in them if name.startswith('/') or '..' in name: continue target = os.path.join(extract_dir, *name.split('/')) if not target: continue _ensure_directory(target) if not name.endswith('/'): # file data = zip.read(info.filename) f = open(target, 'wb') try: f.write(data) finally: f.close() del data finally: zip.close()
Example #25
Source File: archive_util.py From lambda-chef-node-cleanup with Apache License 2.0 | 5 votes |
def unpack_zipfile(filename, extract_dir, progress_filter=default_filter): """Unpack zip `filename` to `extract_dir` Raises ``UnrecognizedFormat`` if `filename` is not a zipfile (as determined by ``zipfile.is_zipfile()``). See ``unpack_archive()`` for an explanation of the `progress_filter` argument. """ if not zipfile.is_zipfile(filename): raise UnrecognizedFormat("%s is not a zip file" % (filename,)) with ContextualZipFile(filename) as z: for info in z.infolist(): name = info.filename # don't extract absolute paths or ones with .. in them if name.startswith('/') or '..' in name.split('/'): continue target = os.path.join(extract_dir, *name.split('/')) target = progress_filter(name, target) if not target: continue if name.endswith('/'): # directory ensure_directory(target) else: # file ensure_directory(target) data = z.read(info.filename) with open(target, 'wb') as f: f.write(data) unix_attributes = info.external_attr >> 16 if unix_attributes: os.chmod(target, unix_attributes)
Example #26
Source File: archive_util.py From ironpython2 with Apache License 2.0 | 5 votes |
def unpack_zipfile(filename, extract_dir, progress_filter=default_filter): """Unpack zip `filename` to `extract_dir` Raises ``UnrecognizedFormat`` if `filename` is not a zipfile (as determined by ``zipfile.is_zipfile()``). See ``unpack_archive()`` for an explanation of the `progress_filter` argument. """ if not zipfile.is_zipfile(filename): raise UnrecognizedFormat("%s is not a zip file" % (filename,)) with zipfile.ZipFile(filename) as z: for info in z.infolist(): name = info.filename # don't extract absolute paths or ones with .. in them if name.startswith('/') or '..' in name.split('/'): continue target = os.path.join(extract_dir, *name.split('/')) target = progress_filter(name, target) if not target: continue if name.endswith('/'): # directory ensure_directory(target) else: # file ensure_directory(target) data = z.read(info.filename) with open(target, 'wb') as f: f.write(data) unix_attributes = info.external_attr >> 16 if unix_attributes: os.chmod(target, unix_attributes)
Example #27
Source File: test_shutil.py From ironpython2 with Apache License 2.0 | 5 votes |
def test_make_zipfile(self): # creating something to zip root_dir, base_dir = self._create_files() tmpdir2 = self.mkdtemp() # force shutil to create the directory os.rmdir(tmpdir2) # working with relative paths work_dir = os.path.dirname(tmpdir2) rel_base_name = os.path.join(os.path.basename(tmpdir2), 'archive') with support.change_cwd(work_dir): base_name = os.path.abspath(rel_base_name) res = make_archive(rel_base_name, 'zip', root_dir) self.assertEqual(res, base_name + '.zip') self.assertTrue(os.path.isfile(res)) self.assertTrue(zipfile.is_zipfile(res)) with zipfile.ZipFile(res) as zf: self.assertEqual(sorted(zf.namelist()), ['dist/', 'dist/file1', 'dist/file2', 'dist/sub/', 'dist/sub/file3', 'dist/sub2/', 'outer']) support.unlink(res) with support.change_cwd(work_dir): base_name = os.path.abspath(rel_base_name) res = make_archive(rel_base_name, 'zip', root_dir, base_dir) self.assertEqual(res, base_name + '.zip') self.assertTrue(os.path.isfile(res)) self.assertTrue(zipfile.is_zipfile(res)) with zipfile.ZipFile(res) as zf: self.assertEqual(sorted(zf.namelist()), ['dist/', 'dist/file1', 'dist/file2', 'dist/sub/', 'dist/sub/file3', 'dist/sub2/'])
Example #28
Source File: archive.py From env with GNU General Public License v2.0 | 5 votes |
def package_integrity_test(path): ret = True if path.find(".zip") != -1: try: if zipfile.is_zipfile(path): # Test zip again to make sure it's a right zip file. arch = zipfile.ZipFile(path, "r") if arch.testzip(): ret = False arch.close() else: ret = False print('package check error. \n') except Exception as e: print('Package test error message:%s\t' % e) print("The archive package is broken. \n") arch.close() ret = False # if ".tar.bz2" in path:. if path.find(".tar.bz2") != -1: try: if not tarfile.is_tarfile(path): ret = False except Exception as e: print('Error message:%s' % e) ret = False # if ".tar.gz" in path: if path.find(".tar.gz") != -1: try: if not tarfile.is_tarfile(path): ret = False except Exception as e: print('Error message:%s' % e) ret = False return ret
Example #29
Source File: archive_util.py From lambda-packs with MIT License | 5 votes |
def unpack_zipfile(filename, extract_dir, progress_filter=default_filter): """Unpack zip `filename` to `extract_dir` Raises ``UnrecognizedFormat`` if `filename` is not a zipfile (as determined by ``zipfile.is_zipfile()``). See ``unpack_archive()`` for an explanation of the `progress_filter` argument. """ if not zipfile.is_zipfile(filename): raise UnrecognizedFormat("%s is not a zip file" % (filename,)) with zipfile.ZipFile(filename) as z: for info in z.infolist(): name = info.filename # don't extract absolute paths or ones with .. in them if name.startswith('/') or '..' in name.split('/'): continue target = os.path.join(extract_dir, *name.split('/')) target = progress_filter(name, target) if not target: continue if name.endswith('/'): # directory ensure_directory(target) else: # file ensure_directory(target) data = z.read(info.filename) with open(target, 'wb') as f: f.write(data) unix_attributes = info.external_attr >> 16 if unix_attributes: os.chmod(target, unix_attributes)
Example #30
Source File: filehunt.py From PANhunt with BSD 3-Clause "New" or "Revised" License | 5 votes |
def check_regexs(self, regexs, search_extensions): """Checks the file for matching regular expressions: if a ZIP then each file in the ZIP (recursively) or the text in a document""" if self.type == 'ZIP': try: if zipfile.is_zipfile(self.path): zf = zipfile.ZipFile(self.path) self.check_zip_regexs(zf, regexs, search_extensions, '') else: self.set_error('Invalid ZIP file') except IOError: self.set_error(sys.exc_info()[1]) except: self.set_error(sys.exc_info()[1]) elif self.type == 'TEXT': try: file_text = read_file(self.path, 'rb') self.check_text_regexs(file_text, regexs, '') #except WindowsError: # self.set_error(sys.exc_info()[1]) except IOError: self.set_error(sys.exc_info()[1]) except: self.set_error(sys.exc_info()[1]) elif self.type == 'SPECIAL': if get_ext(self.path) == '.msg': try: msg = msmsg.MSMSG(self.path) if msg.validMSG: self.check_msg_regexs(msg, regexs, search_extensions, '') else: self.set_error('Invalid MSG file') msg.close() except IOError: self.set_error(sys.exc_info()[1]) except: self.set_error(sys.exc_info()[1]) return self.matches