feature: sol004 and sol007
[osm/common.git] / osm_common / fslocal.py
index 4a82c4f..ae22c6a 100644 (file)
@@ -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):
         """