6
0

ProgressFileWriter.py 624 B

12345678910111213141516171819202122232425
  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. # pylint: disable=consider-using-with
  8. self.file_handler = open(path, mode, encoding='utf8')
  9. self.progress = 0
  10. self.callback = callback
  11. super().__init__(self.file_handler, 262144)
  12. def write(self, s):
  13. value = super().write(s)
  14. if self.callback is not None:
  15. self.progress += value
  16. self.callback(self.progress)
  17. return value