Python - 有没有一种方法可以等待os.unlink()或os.remove()完成?

8

I have the following code:

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个回答

9
使用shutil.rmtree()删除目录, 不需要删除文件。
import shutil

shutil.rmtree('_Temp_Dir_')
< p > os.remove() 很好用(它不会在文件删除完成之前返回),但该目录中可能存在其他文件,这些文件在您的sleep()调用期间被删除。


3
`os.remove()` 是同步操作,当它返回时,文件肯定已经被删除了(当然,除非它抛出一个异常)。
你看到的效果可能是其他原因造成的。我可以想象这些影响:
1. 病毒扫描器 2. 桌面索引
为了找出发生了什么,建议在删除前使用 `os.listdir()` 在文件夹上进行操作,并在 `os.rmdir()` 失败时打印结果。列表中的名称可能会让你有所启发。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接