From dd7025b2ca12956d3052700f55e33a4a5f9e31b9 Mon Sep 17 00:00:00 2001 From: Matthias Geier Date: Tue, 25 Feb 2014 18:40:46 +0100 Subject: [PATCH] Add flush() and close() --- pysoundfile.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/pysoundfile.py b/pysoundfile.py index f50c2a3..638d111 100644 --- a/pysoundfile.py +++ b/pysoundfile.py @@ -350,20 +350,27 @@ def vio_tell(user_data): } return vio - def __del__(self): - # be sure to flush data to disk before closing the file - if self._file: - _snd.sf_write_sync(self._file) + def flush(self): + # flush unwritten data to disc + _snd.sf_write_sync(self._file) + + def close(self): + if hasattr(self, '_file'): + # be sure to flush data to disk before closing the file + self.flush() err = _snd.sf_close(self._file) + vars(self).clear() self._handle_error_number(err) - self._file = None + + def __del__(self): + self.close() def __enter__(self): return self def __exit__(self, type, value, tb): # flush remaining data to disk and close file - self.__del__() + self.close() def _handle_error(self): # this checks the error flag of the SNDFILE* structure