0
votes

Comment sautez-vous la suppression d'un fichier après avoir obtenu une erreur?

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


1 commentaires

Le si l'impression de votre code est un moyen incorrect d'utiliser Imprimer, ce que vous recherchez, c'est manipulation d'exception , jetez un oeil à ce Link


4 Réponses :


0
votes

Vous pouvez envelopper votre commande DELETE dans ESSAY / SAUF Block et au lieu de OS Utilisez le module Utilisez sous-processus afin de jeter une exception au cas où de l'échec: xxx

Mais vous devez vous modifier pendant que la condition, vous avez une boucle infinie là-bas - ( tandis que "TEMP" sera toujours vrai )


2 commentaires

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.



0
votes

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.')


0 commentaires

0
votes

Votre tandis que ("TEMP"): devrait réellement être équivalent à un tandis que la vraie en boucle car elle ne s'arrêtera jamais.

Vous pouvez utiliser le PATHLIB pour atteindre votre objectif, par exemple (supprimant le contenu dans / tmp ) xxx


0 commentaires

0
votes

Vous allez vouloir essayer / sauf la déclaration. et nichez-le dans A pour la boucle.

Votre code ressemblera à ceci: xxx

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.

Si vous "Essayez", et il échoue sur le fichier.


0 commentaires