它只在程序结束时删除所有内容(就像通常那样)。在
下面是我使用的代码: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__(), οnerrοr=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())
和输出:
^{pr2}$
如果你在交互模式下运行它,它在你退出程序之前不会被删除。在$ 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,它的行为将与program end完全相同