我有以下代码:
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()
不足以删除文件。有什么方法可以等待它完成它的工作吗?
答案 0 :(得分:8)
使用shutil.rmtree()
删除目录,不用担心删除文件:
import shutil
shutil.rmtree('_Temp_Dir_')
os.remove()
工作得很好(在文件删除完成之前不会返回),该目录中必须有其他文件,这些文件在此过程中留下并被删除sleep()
致电。
答案 1 :(得分:2)
os.remove()`是一个同步操作;当它返回时,文件肯定消失了(除非它抛出错误,当然)。
你看到的影响很大。我可以想象这些影响:
要了解发生了什么,我建议您在删除之前在文件夹上使用os.listdir()
,并在os.rmdir()
失败时打印结果。列表中的名称可能会让您知道发生了什么。