2013-09-22 11 views
5

Ho il codice seguente:Python - C'è un modo per aspettare os.unlink() o os.remove() per finire?

os.remove('_Temp_Dir_\main' + str(i) + '.exe') 
os.rmdir('_Temp_Dir_') 

che mi dà:

OSError: [WinError 145] Directory is not empty: '_Temp_Dir_' 

se ho messo la linea

time.sleep(0.05) 

prima os.rmdir(), funziona correttamente. Penso che os.remove() non sia abbastanza veloce da rimuovere il file. Qualche modo di aspettare che finisca il suo lavoro?

risposta

7

Usa shutil.rmtree() per rimuovere la directory e non perdere tempo con la rimozione del file:

import shutil 

shutil.rmtree('_Temp_Dir_') 

I os.remove() funziona bene (che non tornerà fino a quando il file rimuove completa), ci deve essere altro i file in quella directory che il processo è rimasto indietro e vengono rimossi durante la chiamata sleep().

2

os.remove() `è un'operazione sincrona; quando ritorna, il file è definitivamente sparito (a meno che non abbia generato un errore, ovviamente).

L'effetto che vedi è molto altro. Posso immaginare questi effetti:

  1. scanner di virus
  2. indicizzazione Desktop

Per scoprire che cosa sta succedendo, suggerisco di usare os.listdir() sulla cartella prima di eliminare e stampare il risultato quando os.rmdir() non riesce. I nomi nella lista potrebbero darti un'idea di cosa sta succedendo.

Problemi correlati