Attendez la fin des E / S de fichiers Windows en Python

J’ai un ensemble de tests système qui lancent certains processus, créent des fichiers, etc., puis les ferment tous et suppriment les fichiers.

Je rencontre deux erreurs intermittentes sur le nettoyage:

Sur un fichier journal créé par l’un des processus:

os.remove(log_path) WindowsError: [Error 32] The process cannot access the file because it is being used by another process:  

Lorsque vous essayez de supprimer le répertoire de sortie avec shutil.rmtree :

 File "C:\Python27\lib\shutil.py", line 254, in rmtree os.rmdir(path) WindowsError: [Error 145] The directory is not empty: 'C:\\TestTarget\\xxx' 

Les deux erreurs disparaissent si j’insère un délai de 2 secondes avant le tidyup, donc je pense que le problème vient du temps que Windows met à libérer les fichiers. Evidemment, je voudrais éviter de retarder mes tests, y a-t-il un moyen d’attendre que le système de fichiers se soit rattrapé?

La fonction que vous utilisez ne supprime que les répertoires vides

Essayez avec:

 import shutil shutil.rmtree('/folder_path') 

Essayez également d’append un intervalle de veille avant d’arrêter les processus.