diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/archive.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/archive.py b/lib/archive.py index fb6dfa2..aa2a47f 100644 --- a/lib/archive.py +++ b/lib/archive.py | |||
| @@ -40,6 +40,28 @@ class ZipStripper(GenericArchiveStripper): | |||
| 40 | zipin.close() | 40 | zipin.close() |
| 41 | return metadata | 41 | return metadata |
| 42 | 42 | ||
| 43 | def remove_all(self): | ||
| 44 | folder_list = [] | ||
| 45 | zipin = zipfile.ZipFile(self.filename, 'r') | ||
| 46 | zipout = zipfile.ZipFile(self.filename + parser.POSTFIX, 'w', | ||
| 47 | allowZip64=True) | ||
| 48 | for item in zipin.infolist(): | ||
| 49 | zipin.extract(item) | ||
| 50 | if os.path.isfile(item.filename): | ||
| 51 | try: | ||
| 52 | cfile = mat.create_class_file(item.filename, False) | ||
| 53 | cfile.remove_all() | ||
| 54 | logging.debug('Processing %s from %s' % (item.filename, | ||
| 55 | self.filename)) | ||
| 56 | except: | ||
| 57 | print('%s\' filefomart is not supported'%item.filename) | ||
| 58 | zipout.write(item.filename) | ||
| 59 | else: | ||
| 60 | self.folder_list.insert(0, item.filename) | ||
| 61 | logging.info('%s treated' % self.filename) | ||
| 62 | self.remove_folder() | ||
| 63 | zipin.close() | ||
| 64 | zipout.close() | ||
| 43 | 65 | ||
| 44 | class TarStripper(GenericArchiveStripper): | 66 | class TarStripper(GenericArchiveStripper): |
| 45 | def _remove(self, current_file): | 67 | def _remove(self, current_file): |
