From 0c1a5b1eaff3495bd3094b3303188d9086114f4b Mon Sep 17 00:00:00 2001 From: Agata Murawska <agatamurawska@google.com> Date: Thu, 22 Sep 2011 14:17:25 +0200 Subject: [PATCH] TemporaryFilesManager implementation Signed-off-by: Agata Murawska <agatamurawska@google.com> Reviewed-by: Michael Hanselmann <hansmi@google.com> --- lib/utils/io.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/lib/utils/io.py b/lib/utils/io.py index 91899a210..1d11e8b35 100644 --- a/lib/utils/io.py +++ b/lib/utils/io.py @@ -796,3 +796,40 @@ def NewUUID(): """ return ReadFile(_RANDOM_UUID_FILE, size=128).rstrip("\n") + + +class TemporaryFileManager(object): + """Stores the list of files to be deleted and removes them on demand. + + """ + + def __init__(self): + self._files = [] + + def __del__(self): + self.Cleanup() + + def Add(self, filename): + """Add file to list of files to be deleted. + + @type filename: string + @param filename: path to filename to be added + + """ + self._files.append(filename) + + def Remove(self, filename): + """Remove file from list of files to be deleted. + + @type filename: string + @param filename: path to filename to be deleted + + """ + self._files.remove(filename) + + def Cleanup(self): + """Delete all files marked for deletion + + """ + while self._files: + RemoveFile(self._files.pop()) -- GitLab