7

我有以下代码:

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()删除文件的速度不够快。有什么方法可以等待它完成工作吗?

4

2 回答 2

9

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

import shutil

shutil.rmtree('_Temp_Dir_')

工作正常(在os.remove()文件删除完成之前它不会返回),该目录中必须有其他文件,该进程留下并在您的sleep()调用期间被删除。

于 2013-09-22T09:45:17.687 回答
3

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

你看到的效果很多是别的东西。我可以想象这些效果:

  1. 病毒扫描程序
  2. 桌面索引

要了解发生了什么,我建议在删除之前os.listdir()使用文件夹并在失败时打印结果。列表中的名称可能会让您了解发生了什么。os.rmdir()

于 2013-09-22T10:09:06.803 回答