Python - 有没有办法等待os.unlink()或os.remove()完成?

时间:2013-09-22 09:42:31

标签: python windows wait

我有以下代码:

os.remove('_Temp_Dir_\main' + str(i) + '.exe')
os.rmdir('_Temp_Dir_')

这给了我:

OSError: [WinError 145] Directory is not empty: '_Temp_Dir_'

如果我放行

time.sleep(0.05)

os.rmdir()之前,它可以正常工作。我认为os.remove()不足以删除文件。有什么方法可以等待它完成它的工作吗?

2 个答案:

答案 0 :(得分:8)

使用shutil.rmtree()删除目录,不用担心删除文件:

import shutil

shutil.rmtree('_Temp_Dir_')

os.remove()工作得很好(在文件删除完成之前不会返回),该目录中必须有其他文件,这些文件在此过程中留下并被删除sleep()致电。

答案 1 :(得分:2)

os.remove()`是一个同步操作;当它返回时,文件肯定消失了(除非它抛出错误,当然)。

你看到的影响很大。我可以想象这些影响:

  1. 病毒扫描程序
  2. 桌面索引
  3. 要了解发生了什么,我建议您在删除之前在文件夹上使用os.listdir(),并在os.rmdir()失败时打印结果。列表中的名称可能会让您知道发生了什么。