:py:mod:`kwcoco.util.util_archive` ================================== .. py:module:: kwcoco.util.util_archive Module Contents --------------- Classes ~~~~~~~ .. autoapisummary:: kwcoco.util.util_archive.Archive Functions ~~~~~~~~~ .. autoapisummary:: kwcoco.util.util_archive.unarchive_file .. py:class:: Archive(fpath=None, mode='r', backend=None, file=None) Bases: :py:obj:`object` Abstraction over zipfile and tarfile .. todo:: see if we can use one of these other tools instead SeeAlso: https://github.com/RKrahl/archive-tools https://pypi.org/project/arlib/ .. rubric:: Example >>> from os.path import join >>> dpath = ub.ensure_app_cache_dir('ubelt', 'tests', 'archive') >>> ub.delete(dpath) >>> dpath = ub.ensure_app_cache_dir(dpath) >>> import pathlib >>> dpath = pathlib.Path(dpath) >>> # >>> # >>> mode = 'w' >>> self1 = Archive(str(dpath / 'demo.zip'), mode=mode) >>> self2 = Archive(str(dpath / 'demo.tar.gz'), mode=mode) >>> # >>> open(dpath / 'data_1only.txt', 'w').write('bazbzzz') >>> open(dpath / 'data_2only.txt', 'w').write('buzzz') >>> open(dpath / 'data_both.txt', 'w').write('foobar') >>> # >>> self1.add(dpath / 'data_both.txt') >>> self1.add(dpath / 'data_1only.txt') >>> # >>> self2.add(dpath / 'data_both.txt') >>> self2.add(dpath / 'data_2only.txt') >>> # >>> self1.close() >>> self2.close() >>> # >>> self1 = Archive(str(dpath / 'demo.zip'), mode='r') >>> self2 = Archive(str(dpath / 'demo.tar.gz'), mode='r') >>> # >>> extract_dpath = ub.ensuredir(str(dpath / 'extracted')) >>> extracted1 = self1.extractall(extract_dpath) >>> extracted2 = self2.extractall(extract_dpath) >>> for fpath in extracted2: >>> print(open(fpath, 'r').read()) >>> for fpath in extracted1: >>> print(open(fpath, 'r').read()) .. py:method:: _open(cls, fpath, mode) :classmethod: .. py:method:: __iter__(self) .. py:method:: coerce(cls, data) :classmethod: Either open an archive file path or coerce an existing ZipFile or tarfile structure into this wrapper class .. py:method:: add(self, fpath, arcname=None) .. py:method:: close(self) .. py:method:: __enter__(self) .. py:method:: __exit__(self, *args) .. py:method:: extractall(self, output_dpath='.', verbose=1, overwrite=True) .. py:function:: unarchive_file(archive_fpath, output_dpath='.', verbose=1, overwrite=True)