class TrackFileReadProgress(object): def __init__(self, progress_name, fobj): self.progress_name = progress_name self.fobj = fobj file_size = os.fstat(fobj.fileno()).st_size self.tqdm = Tqdm(desc=self.progress_name, total=file_size) def read(self, size): self.tqdm.update(size) return self.fobj.read(size) def close(self): self.fobj.close() self.tqdm.close() def __getattr__(self, attr): return getattr(self.fobj, attr)
class TrackFileReadProgress(object): UPDATE_AFTER_READ_COUNT = 30 def __init__(self, progress_name, fobj): self.progress_name = progress_name self.fobj = fobj self.file_size = os.fstat(fobj.fileno()).st_size self.tqdm = Tqdm(desc=self.progress_name, total=self.file_size) self.update_counter = 0 def read(self, size): if self.update_counter == 0: self.tqdm.update_to(self.fobj.tell()) self.update_counter = self.UPDATE_AFTER_READ_COUNT else: self.update_counter -= 1 return self.fobj.read(size) def close(self): self.fobj.close() self.tqdm.close() def __getattr__(self, attr): return getattr(self.fobj, attr)