X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2Fcommon.git;a=blobdiff_plain;f=osm_common%2Ffslocal.py;h=ae22c6ab1b3ef44e721c1520159100f52de84bb7;hp=4a82c4f43cd996732aa7c7e1872e7bc98e6dcecd;hb=98fc8f01d18d1a05c16fed7ccee355611a6e20ce;hpb=2644b76248a1b96f7a47013b414e31b4e3feecf8 diff --git a/osm_common/fslocal.py b/osm_common/fslocal.py index 4a82c4f..ae22c6a 100644 --- a/osm_common/fslocal.py +++ b/osm_common/fslocal.py @@ -16,6 +16,8 @@ # limitations under the License. import os +import tarfile +import zipfile import logging # import tarfile @@ -116,10 +118,10 @@ class FsLocal(FsBase): f = "/".join(storage) return os.path.getsize(self.path + f) - def file_extract(self, tar_object, path): + def file_extract(self, compressed_object, path): """ extract a tar file - :param tar_object: object of type tar + :param compressed_object: object of type tar or zip :param path: can be a str or a str list, or a tar object where to extract the tar_object :return: None """ @@ -127,7 +129,13 @@ class FsLocal(FsBase): f = self.path + path else: f = self.path + "/".join(path) - tar_object.extractall(path=f) + + if type(compressed_object) is tarfile.TarFile: + compressed_object.extractall(path=f) + elif ( + type(compressed_object) is zipfile.ZipFile + ): # Just a check to know if this works with both tar and zip + compressed_object.extractall(path=f) def file_open(self, storage, mode): """