它仅在程序结束时删除所有内容(就像通常那样)。
为了说明,这是我使用的代码:
import tempfile
import shutil
import os
class TempDir(str):
""" container for temporary directory. Deletes directory when garbage
collected/zero references """
def __del__(self):
print "deleting temporary files in directory {}".format(self.__str__())
shutil.rmtree(self.__str__(), onerror=delete_dir_handler)
def delete_dir_handler(listdir_fn, dirname, exception):
try:
for fileobj in listdir_fn(dirname):
os.remove(fileobj)
os.removedirs(dirname)
except (AttributeError, OSError, TypeError):
print exception[1]
print "Sorry. Couldn't delete directory {}.".format(dirname)
raise
test = TempDir(tempfile.mkdtemp())
并输出:
$ python my_file.py
deleting temporary files in directory /var/folders/A9/A9xrfjrXGsq9Cf0eD2jf0U+++TI/-Tmp-/tmpG3h1qD
如果您在交互模式下运行它,它不会删除,直到您退出程序。
$ python -i my program
>>> # pressed Ctrl-C here
KeyboardInterrupt
>>> # again, Ctrl-C
KeyboardInterrupt
>>> # Ctrl-D to exit
deleting temporary files in directory /var/folders/A9/A9xrfjrXGsq9Cf0eD2jf0U+++TI/-Tmp-/tmpMBGt5n
最后,如果您raw_input('')
在文件中添加一行,如果您按 Ctrl-C,它的行为将与程序结束完全相同。