我需要开发一个脚本来启动一些计算。我希望这个脚本能够正确处理^C信号,通过删除一些临时目录来实现。我已经尝试了几个版本的代码在signal_handler中:
shutil.rmtree(self.temp)
甚至可以
os.system("rm -rf " + self.temp)
当我中断执行并调用处理程序以删除目录时,我会遇到以下错误:
OSError: [Errno 17] File exists : 'foo'
或者
rm: Unable to remove directory foo: File exists
执行完毕后,我想要删除的目录为空,可以在shell中使用
rm -r
命令删除。然而,如果我执行以下代码:for f in os.listdir(self.temp):
os.remove(os.path.join(self.temp,f))
for f in os.listdir(self.temp):
print f
os.rmdir(self.temp)
当然,我遇到了错误,但第二个循环找到了这个文件:.nfsA13D3
有人有解决我的问题的方法吗? 谢谢!
rm
删除一个文件时,会创建.nfs*
文件。一旦.nfs
文件的引用计数降至0,它应该会消失(尽管我过去遇到过不总是这样的情况,需要手动清理)。 - twalberg