Je dois faire le processus qui supprime tous les fichiers dans le dossier Temp lorsque j'exécute le programme. "Le processus ne peut pas accéder au fichier car il est utilisé par un autre processus.", J'ai donc essayé de le faire sauter le fichier s'il l'a dit que cela ne fonctionne pas. Je suis aussi très nouveau à Python. Voici mon code:
if event in ('Delete Temp'): while ("temp"): os.system('cmd /c "del /q/f/s %TEMP%\*"') if print('The process can not access the file because it is being used by another process.') pass
4 Réponses :
Vous pouvez envelopper votre commande DELETE dans Mais vous devez vous modifier pendant que la condition, vous avez une boucle infinie là-bas - ( ESSAY / SAUF CODE> Block et au lieu de
OS code> Utilisez le module Utilisez
sous-processus code> afin de jeter une exception au cas où de l'échec:
tandis que "TEMP" code> sera toujours
vrai code>) p> p>
Mais que dois-je définir la condition?
tout ce que vous voulez. Si vous essayez de supprimer les fichiers un par un, vous pouvez remplacer la boucle tandis que pour la boucle et itérer sur les fichiers.
L'erreur vous apparaît car vous avez un processus qui l'utilise (pourrait être une interface de ligne de commande ou directement accessible par vous)
Cependant, je trouve le plus facile de "sauter" sur les fichiers utilisés par un autre processus avec Essayer à l'exception du bloc. P>
Essayez / sauf Bloquer vous permettra de Poignée forte> Exceptions lancées par des commandes intégrées Python que vous utilisez (comme celui-ci pour supprimer un fichier). P > Plus important encore, il n'écrasera pas votre programme pendant l'exécution si vous gérez simplement avec imprimer quelque chose: p> try:
#Run your deletion commands here
except:
#Your code will run this block if there is an exception when your try to delete
print('Something went wrong with that file you tried to delete.')
Votre Vous pouvez utiliser le tandis que ("TEMP"): code> devrait réellement être équivalent à un
tandis que la vraie code> en boucle car elle ne s'arrêtera jamais.
/ tmp code>) p>
Vous allez vouloir essayer / sauf la déclaration. et nichez-le dans A pour la boucle.
Votre code ressemblera à ceci: p> Vous utilisez la fonction de marche de la bibliothèque d'exploitation pour accéder à chacun des fichiers "DIR ".
"Dir" est le répertoire que vous souhaitez supprimer.
Ensuite, vous faites boucler à travers chacun des fichiers et vous essayez de le supprimer. P> Si vous "Essayez", et il échoue sur le fichier. P> P>
Le
si l'impression code> de votre code est un moyen incorrect d'utiliser Imprimer, ce que vous recherchez, c'est
manipulation d'exception code>, jetez un oeil à ce Link