2013-09-22 62 views
5

我有以下代碼:Python - 有沒有辦法等待os.unlink()或os.remove()完成?

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()速度不夠快,無法刪除文件。任何方式等待它完成其工作?

回答

7

使用shutil.rmtree()刪除目錄和不刪除文件懶得:

import shutil 

shutil.rmtree('_Temp_Dir_') 

os.remove()作品就好了(它不會返回,直到該文件刪除完成後),必須有其他該目錄中該進程留下的文件,並在您的sleep()調用期間被刪除。

2

os.remove()`是一個同步操作;當它返回時,文件肯定會消失(除非它拋出錯誤,當然)。

你看到的效果很多是別的。我能想象這些影響:

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

要找出到底是怎麼回事,我建議的文件夾上使用os.listdir()之前刪除和打印結果當os.rmdir()失敗。列表中的名字可能會讓你知道發生了什麼。

相關問題