#!/usr/bin/python3 import tarfile import os import threading class TarWriter: def __init__(self, fileobj): self.tarfile = tarfile.open(fileobj=fileobj, mode='w|', format=tarfile.PAX_FORMAT) def add(self, path, arcname=None): self.tarfile.add(path, arcname=arcname, recursive=False) # Keep memory consumption down self.tarfile.members = [] self.tarfile.inodes = {} pass def close(self): self.tarfile.close() self.tarfile = None class TarReader: def __init__(self, fileobj): self.fileobj = fileobj self.tarfile = None pass def __iter__(self): if self.tarfile == None: self.tarfile = tarfile.open(fileobj=self.fileobj, mode='r|') pass for e in self.tarfile: yield e # Keep memory consumption down self.tarfile.members = [] pass pass def close(self): self.tarfile.close() self.tarfile = None