2013-09-22 10 views
5

Mam następujący kod:Python - Czy istnieje sposób na zakończenie oczekiwania na os.unlink() lub os.remove()?

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

co daje mi:

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

jeśli mogę umieścić linię

time.sleep(0.05) 

przed os.rmdir(), to działa poprawnie. Myślę, że os.remove() nie jest wystarczająco szybki, aby usunąć plik. Jakikolwiek sposób czekać na zakończenie swojej pracy?

Odpowiedz

7

Zastosowanie shutil.rmtree() usunąć katalog i nie przejmować się usunięcie pliku:

import shutil 

shutil.rmtree('_Temp_Dir_') 

W os.remove() działa dobrze (nie wróci aż do pliku usuń kończy), musi istnieć inny pliki w tym katalogu, które proces pozostawił i zostały usunięte podczas połączenia sleep().

2

os.remove() `jest operacją synchroniczną; kiedy wróci, plik zdecydowanie znika (chyba że oczywiście zgłasza błąd).

Efekt, który widzisz, jest czymś innym. Mogę sobie wyobrazić te efekty:

  1. skaner wirusów
  2. indeksowanie Pulpit

Aby dowiedzieć się, co się dzieje, proponuję użyć os.listdir() folder przed usunąć i wydrukować wynik gdy zawiedzie os.rmdir(). Nazwy na liście mogą dać ci pojęcie, co się dzieje.

Powiązane problemy