2010-01-06 5 views
5

J'ai quelques fichiers que je veux supprimer, ils ont le même nom au début mais ont des numéros de version différents. Est-ce que quelqu'un sait comment supprimer des fichiers en utilisant le début de leur nom?Supprimer les fichiers qui commencent par un nom Python

Eg. 
version_1.1 
version_1.2 

Existe-t-il un moyen de supprimer un fichier qui commence par la version du nom?

Merci

+0

Vous voulez donc supprimer les fichiers correspondant 'version_1. *'? –

Répondre

13
import os, glob 
for filename in glob.glob("mypath/version*"): 
    os.remove(filename) 

Remplacez le bon chemin (ou . (= répertoire courant)) pour mypath. Et assurez-vous que vous n'obtenez pas le chemin faux :)

Cela provoquera une exception si un fichier est actuellement utilisé.

+2

L'exception est levée uniquement sur les fenêtres. La suppression de fichiers fonctionne un peu différemment sur Unices. – gnud

3

Dans quelle langue?

Dans bash (Linux/Unix) vous pouvez utiliser:

rm version* 

ou par lots (Windows/DOS) vous pouvez utiliser:

del version* 

Si vous voulez écrire quelque chose à faire en Python, ce serait assez facile - il suffit de regarder la documentation pour les expressions régulières.

modifier: juste pour la référence, c'est de savoir comment faire en Perl:

opendir (folder, "./") || die ("Cannot open directory!"); 
@files = readdir (folder); 
closedir (folder); 

unlink foreach (grep /^version/, @files); 
4

Si vous voulez vraiment utiliser Python, vous pouvez simplement utiliser une combinaison de os.listdir(), qui retourne une liste de tous les fichiers dans un répertoire donné, et os.remove().

i.e. .:

my_dir = # enter the dir name 
for fname in os.listdir(my_dir): 
    if fname.startswith("version"): 
     os.remove(os.path.join(my_dir, fname)) 

Cependant, comme d'autres réponses ont indiqué, vous avez vraiment de ne pas utiliser Python pour cela, le shell supporte nativement probablement une telle opération.

+0

C'est bon quand il n'y a pas trop de fichiers! –

1
import os 
os.chdir("/home/path") 
for file in os.listdir("."): 
    if os.path.isfile(file) and file.startswith("version"): 
     try: 
       os.remove(file) 
     except Exception,e: 
       print e 
Questions connexes