aboutsummaryrefslogtreecommitdiffstats
path: root/snips_inference_agl/common/io_utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'snips_inference_agl/common/io_utils.py')
-rw-r--r--snips_inference_agl/common/io_utils.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/snips_inference_agl/common/io_utils.py b/snips_inference_agl/common/io_utils.py
new file mode 100644
index 0000000..f4407a3
--- /dev/null
+++ b/snips_inference_agl/common/io_utils.py
@@ -0,0 +1,36 @@
+import errno
+import os
+import shutil
+from contextlib import contextmanager
+from pathlib import Path
+from tempfile import mkdtemp
+from zipfile import ZipFile, ZIP_DEFLATED
+
+
+def mkdir_p(path):
+ """Reproduces the 'mkdir -p shell' command
+
+ See
+ http://stackoverflow.com/questions/600268/mkdir-p-functionality-in-python
+ """
+ try:
+ os.makedirs(str(path))
+ except OSError as exc: # Python >2.5
+ if exc.errno == errno.EEXIST and path.is_dir():
+ pass
+ else:
+ raise
+
+
+@contextmanager
+def temp_dir():
+ tmp_dir = mkdtemp()
+ try:
+ yield Path(tmp_dir)
+ finally:
+ shutil.rmtree(tmp_dir)
+
+
+def unzip_archive(archive_file, destination_dir):
+ with ZipFile(archive_file, "r", ZIP_DEFLATED) as zipf:
+ zipf.extractall(str(destination_dir))