有没有办法等待os.remove()完成?

时间:2017-12-01 09:56:01

标签: python windows file-io wait

有没有办法等待os.remove()完成?我有一个脚本,每天制作一些png图片并先删除旧图片,这样制作的图片实际上是旧图片中的更新图片。

问题是 - 我猜 - os.remove()没有足够的时间来完成,因为正在制作的文件与被删除的文件完全相同。但是如果我在os.remove()之后放了一个time.sleep(5)就行了。

代码是这样的

...some imports

for root, dirs, files in os.walk(trgt_folder):
    [os.remove(os.path.join(root, file)) for file in files if 'png' in file]
make_and_save_newpics(trgt_folder)

2 个答案:

答案 0 :(得分:0)

如果你覆盖同一个文件,我会建议一个更好的解决方案,而不是给出time.sleep(5),为什么不检查文件是否存在,然后再次删除文件保存:

import os
# put this check before file save operation
if os.path.isfile(filepath):
    os.remove(os.path.join(root, file))
    # save new pic after this 
    make_and_save_newpics(trgt_folder)

如果时间是约束,会有更好的方法,time.sleep(5)不是一个好方法

答案 1 :(得分:0)

如果您想等待os.remove()的完成,我建议您使用线程。 在线程中调用os.remove()并等待它完成。