diff --git a/libmat2/office.py b/libmat2/office.py index 23249b4ba5c999ff2cd7c75581e6f381e5cfb6f1..e48773a0c1e05f8507f0e84b12b4e2c65d3ee762 100644 --- a/libmat2/office.py +++ b/libmat2/office.py @@ -88,6 +88,7 @@ class ArchiveBasedAbstractParser(abstract.AbstractParser): zipfile.ZipFile(self.output_filename, 'w') as zout: temp_folder = tempfile.mkdtemp() + abort = False for item in zin.infolist(): if item.filename[-1] == '/': # `is_dir` is added in Python3.6 @@ -123,12 +124,11 @@ class ArchiveBasedAbstractParser(abstract.AbstractParser): if self.unknown_member_policy != 'abort': logging.warning("Invalid unknown_member_policy %s, " + "treating as 'abort'", self.unknown_member_policy) - shutil.rmtree(temp_folder) - os.remove(self.output_filename) logging.error("In file %s, element %s's format (%s) " + "isn't supported", self.filename, item.filename, mtype) - return False + abort = True + continue if tmp_parser: tmp_parser.remove_all() os.rename(tmp_parser.output_filename, full_path) @@ -139,6 +139,9 @@ class ArchiveBasedAbstractParser(abstract.AbstractParser): zout.writestr(clean_zinfo, f.read()) shutil.rmtree(temp_folder) + if abort: + os.remove(self.output_filename) + return False return True