2009-06-13 3 views
6

Je sais comment supprimer des fichiers individuels, mais je suis perdu dans mon implémentation de la façon de supprimer tous les fichiers dans un répertoire d'un type.Supprimer des fichiers par type en Python sur Windows

Dites le répertoire \ myfolder

Je veux supprimer tous les fichiers qui sont des fichiers .config, mais rien aux autres. Comment ferais-je cela?

Merci Veuillez

+0

Voulez-vous dire que vous voulez supprimer tous les * fichiers * .config? – Triptych

+0

Oui! Fixe Désolé pour cela –

+0

Voulez-vous supprimer tous les fichiers .config sous un certain chemin? Si vous voulez juste supprimer un fichier .config, alors vous pouvez juste faire os.remove (". config") –

Répondre

4

je ferais quelque chose comme ce qui suit:

import os 
files = os.listdir("myfolder") 
for f in files: 
    if not os.path.isdir(f) and ".config" in f: 
    os.remove(f) 

Il répertorie les fichiers dans un répertoire et si ce n'est pas un répertoire et le nom du fichier est « .config » partout en elle, supprime-le. Vous devez soit être dans le même répertoire que myfolder, soit lui donner le chemin complet du répertoire. Si vous avez besoin de le faire de manière récursive, j'utiliserais le os.walk function.

+0

Je voulais dire des fichiers, pas Dossiers. Désolé Dan –

+0

Pas votre faute - mais cette réponse est maintenant hors de propos en raison de l'édition de la question OP. – Triptych

+0

Encore un bon exemple d'itération! –

15

Utilisez le module glob:

import os 
from glob import glob 

for f in glob ('myfolder/*.config'): 
    os.unlink (f) 
+1

+1: Yep, glob est la bonne approche ici (si vous ne voulez pas marcher sous-répertoires, bien sûr - qui aurait besoin os.walk). –

1

Here ya go:

import os 

# Return all files in dir, and all its subdirectories, ending in pattern 
def gen_files(dir, pattern): 
    for dirname, subdirs, files in os.walk(dir): 
     for f in files: 
     if f.endswith(pattern): 
      yield os.path.join(dirname, f) 


# Remove all files in the current dir matching *.config 
for f in gen_files('.', '.config'): 
    os.remove(f) 

Notez également que gen_files peut être facilement réécrite pour accepter un tuple de motifs, puisque str.endswith accepte un tuple