2017-04-12 2 views
0

Je suis en train de supprimer le dossier en utilisant la deuxième réponse de this question. Mon dossier contient des sous-dossiers qui contiennent Thumbs.db. Donc, je reçois l'erreur:Comment supprimer thumbs.db en utilisant python?

PermissionError: [WinError 32] Le processus ne peut pas accéder au fichier car le fichier est occupé par un autre processus: « C: /foto/my_foto/Thumbs.db »

lorsque je tente supprimer C: /foto/my_foto/Thumbs.db.

Comment puis-je supprimer ce fichier?

+0

si vous exécutez le script python dans la ligne de commande, ouvrez l'invite de commande « Exécuter en tant qu'administrateur », si python est en cours d'exécution de toute ide, exécutez votre en tant qu'administrateur et ide exécuter votre script. – Haranadh

+0

-je exécuter la ligne de commande en tant qu'administrateur et avoir la même erreur. = ( –

Répondre

2

La même chose que dans d'autres langues - c#, c++, java - parce qu'il est spécifique au système d'exploitation et non la langue.

Il y a quelques options, seul le dernier est dépourvu d'effets secondaires désagréables:

En bref, la bonne façon de faire est le programme qui vous gêner arrêter de faire ça. Ou, si ce programme a une raison légitime de garder là les fichiers verrouillés, repenser vos habitudes d'utilisation du répertoire.

+0

Option 2 a trop de pièges Même si cela fonctionne pour le problème immédiat, elle pourrait conduire à la corruption de données si le programme ouvre un autre fichier qui réutilise la valeur de la poignée fermée, il serait préférable de tuer tout le programme - .. Gracieusement si possible. – eryksun

+0

@eryksun tuer un processus sans rapport avec hasard, il empêche de faire son travail tout en fermant une poignée seulement (probablement) tue une activité indésirable. Si c'est un processus comme 'explorer', le meurtre est pas une option du tout. fermeture poignées est un moyen largement suggéré (il existe des programmes comme Unlocker spécifiquement écrit pour cela), donc je devais le mentionner - ainsi que ses inconvénients –

+1

I upvoted pour les options 1 et 3, et je l'ai mentionné tuer comme un meilleur (pas bon.) solution que d'essayer de fermer les poignées. Les programmes peuvent être durci pour faire face à être tués. Ils peuvent même avoir un arrêt progressif via 'WM_CLOSE' or' WM_QUIT'. même une application console peut être un arrêt progressif ly si elle a un gestionnaire de contrôle, mais seulement s'il est le seul procédé qui est attaché à la console. Cependant, se faufilant pour fermer une poignée n'est pas quelque chose d'un programme devrait raisonnablement attendre, et elle peut conduire à la corruption de données lorsque la valeur de la poignée est réutilisée, ce qui est tout à fait la faute de celui qui fermé la poignée. – eryksun