Je souhaite supprimer tous les fichiers portant l'extension .bak
dans un répertoire. Comment puis-je faire ça en Python?Suppression de tous les fichiers dans un répertoire avec Python
Répondre
Via os.listdir
et os.remove
:
import os
filelist = [ f for f in os.listdir(mydir) if f.endswith(".bak") ]
for f in filelist:
os.remove(os.path.join(mydir, f))
Ou via glob.glob
:
import glob, os, os.path
filelist = glob.glob(os.path.join(mydir, "*.bak"))
for f in filelist:
os.remove(f)
Assurez-vous d'être dans le bon répertoire, en utilisant éventuellement os.chdir
.
Votre premier exemple utilise des boucles redondantes. Vous pouvez passer avec - [os.remove (f) pour f dans os.listdir (".") Si f.endswith (". Bak")] - comme compréhensions de liste sont destinés à être utilisés. Ou vous pouvez déplacer le 'si' dans la compréhension dans la boucle for - pour f dans os.listdir ("."): si f.endswith (". Bak"): os.remove (f) – dragonjujo
@ slh2080 Puisque vous dites que le problème a été résolu, pourquoi ne pas marquer la réponse comme la bonne réponse? – blwy10
@dragonjujo, oui je sais, mais je pensais que ce serait plus clair de cette façon .. – miku
Utilisez os.chdir
pour changer de répertoire. Utilisez glob.glob
pour générer une liste de noms de fichiers qui se terminent par '.bak'. Les éléments de la liste ne sont que des chaînes.
Ensuite, vous pouvez utiliser os.unlink
pour supprimer les fichiers. (PS. os.unlink
et os.remove
sont synonymes de la même fonction.)
#!/usr/bin/env python
import glob
import os
directory='/path/to/dir'
os.chdir(directory)
files=glob.glob('*.bak')
for filename in files:
os.unlink(filename)
vous pouvez créer une fonction. Ajoutez maxdepth comme vous le souhaitez pour parcourir les sous-répertoires.
def findNremove(path,pattern,maxdepth=1):
cpath=path.count(os.sep)
for r,d,f in os.walk(path):
if r.count(os.sep) - cpath <maxdepth:
for files in f:
if files.endswith(pattern):
try:
print "Removing %s" % (os.path.join(r,files))
#os.remove(os.path.join(r,files))
except Exception,e:
print e
else:
print "%s removed" % (os.path.join(r,files))
path=os.path.join("/home","dir1","dir2")
findNremove(path,".bak")
En Python 3.5, os.scandir
est mieux si vous avez besoin de vérifier les attributs de fichier ou le type - voir os.DirEntry
pour les propriétés de l'objet qui est retourné par la fonction.
import os
for file in os.scandir(path):
if file.name.endswith(".bak"):
os.unlink(file.path)
Cela ne nécessite pas de changer les répertoires puisque chaque DirEntry
comprend déjà le chemin complet vers le fichier.
Il vous manque un deux-points, la première ligne à l'intérieur de la boucle for devrait être 'if file.name.endswith (". Bak "):' – TSeymour
Merci!Ça va m'apprendre à écrire du code sans vraiment les exécuter –
Sur Linux et Mac OS, vous pouvez exécuter simple commande au shell:
subprocess.run('rm /tmp/*.bak', shell=True)
Pas un bon choix à mon avis. Ce n'est pas portable et c'est probablement plus cher en raison du sous-processus supplémentaire. Mieux vaut utiliser les API Python. – Haakon
- 1. Rejoindre tous les fichiers dans un répertoire
- 2. Comment compiler tous les fichiers dans un répertoire avec mono?
- 3. Supprimez tous les fichiers redondants dans un répertoire
- 4. Exécution d'un script Python sur tous les fichiers d'un répertoire
- 5. Nombre d'octets de tous les fichiers gzip dans un répertoire
- 6. Obtenir une liste de tous les fichiers dans un répertoire
- 7. source tous les fichiers dans un répertoire de .bash_profile
- 8. Suppression de fichiers dans le répertoire supérieur
- 9. Comment trouver tous les fichiers MP3 dans un répertoire?
- 10. Supprimer tous les fichiers dans un répertoire vb6
- 11. Script PHP pour parcourir tous les fichiers dans un répertoire?
- 12. Page Web qui lie tous les fichiers dans un répertoire
- 13. QMake: compiler automatiquement tous les fichiers dans un répertoire
- 14. Exécuter tous les fichiers SQL dans un répertoire
- 15. Comment déplacer tous les fichiers mp3 dans un seul répertoire?
- 16. php - ftp tous les fichiers dans un répertoire?
- 17. compter les enregistrements de fichiers sur le répertoire avec python
- 18. Suppression de fichiers avec des scripts python
- 19. Parcourir tous les fichiers d'un répertoire
- 20. à montrer tous les fichiers d'un répertoire
- 21. Suppression de tous les fichiers d'un répertoire sur une taille de fichier donné chaque
- 22. Python: Comment trouver tous les fichiers avec une extension particulière?
- 23. En Python, comment trouver tous les fichiers sous un répertoire, y compris les fichiers dans les sous-répertoires?
- 24. Comment puis-je lister tous les fichiers tga dans un répertoire (non récursif) en Python?
- 25. Comment inclure tous les fichiers d'un répertoire avec cmake?
- 26. Python: obtient tous les fichiers exe dans le répertoire courant et les exécute?
- 27. La suppression d'un répertoire en Python
- 28. Commande pour compresser tous les fichiers/dossiers sous un répertoire
- 29. Python: écraser un répertoire avec un autre répertoire contenant les mêmes fichiers
- 30. LINUX: Lien tous les fichiers d'un répertoire à un autre
@ slh2080: affichage "Résolu" est ce que vous faites sur ce site. Qu'est-ce que vous faites est de choisir la réponse que vous avez réellement utilisé et cliquez sur la coche pour indiquer qu'il a résolu votre problème. –
Désolé. Merci d'avoir signalé mon erreur. Ce n'est pas un devoir, j'apprends Python pendant mon temps libre. J'ai cliqué sur la réponse que j'ai utilisée mais c'était avant que j'aie vu la réponse de ghostdog74. – slh2080
note: pour supprimer un arbre de répertoire entier ['shutil.rmtree (chemin)' pourrait être utilisé] (https://docs.python.org/3/library/shutil.html#shutil.rmtree). – jfs