1
1

ProgressFileWriter.py 561 B

123456789101112131415161718192021222324
  1. from io import BufferedWriter
  2. class ProgressFileWriter(BufferedWriter):
  3. """
  4. opens a file and calls a given callback method on every write
  5. """
  6. def __init__(self, path, mode, callback=None):
  7. self.file_handler = open(path, mode)
  8. self.progress = 0
  9. self.callback = callback
  10. super().__init__(self.file_handler, 262144)
  11. def write(self, s):
  12. value = super().write(s)
  13. if self.callback is not None:
  14. self.progress += value
  15. self.callback(self.progress)
  16. return value