Salut cher ami JC,

Tout d'abord, laisse moi te dire que c'est un grand plaisir de te retrouver sur la progliste.

J'espère que ce mail sera profitable à d'autres programmeur en Python comme nous.

En fait, JC, en regardant ton script, je constate, comme l'ont constaté d'ailleur Yannick et Didier, qu'il était à peu près correct, mais il manque quelques petits détails.

Tout d'abord, pour lister tes fichiers, tu as utilisé :

liste = os.listdir(path)

C'est correct, mais si ton dossier aurait contenu des répertoires, ils auraient été inclus dans la liste.

Tu peux obtenir une liste ne comportant que les fichiers de ce répertoire, en utilisant la syntaxe suivante :

liste = [f for f in os.listdir(path) if os.path.isfile(os.path.join(path, f))]

C'est ce que l'on appelle une liste de compréhension.

Le principe est d'ailleurs très bien documenté ici :

http://apprendre-python.com/page-comprehension-list-listes-python-cours-debutants

Autre chose, pour faire l'itération, il y a beaucoup plus simple que la syntaxe que tu as utilisée.

Voici la boucle qui devrait renommer tous les fichiers du répertoire choisi :

for n in liste:
os.rename(os.path.join(path, n), os.path.join(path, modif(n)))

J'ai aussi trouvé une toute petite erreur dans la fonction re.sub destinée à modifier les noms, tu as mis "" "" dans le paramètre devant accueillir la chaîne de remplacement, il fallait mettre juste "".

Voici donc ce que devrait retourner la fonction modif :

return re.sub('[0-9]+.', '', ndf)

Le script corrigé est en PJ, à toute fins utiles.

Voilà, merci à toi.

Bien amicalement,
Abdel.

----- Original Message ----- From: "Jean-Claude Armingaud" <[email protected]>
To: <[email protected]>
Sent: Thursday, December 17, 2015 10:11 PM
Subject: [progliste] modifier des noms de fichiers dans un répertoir e donné


Salut tous,

J'ai, dans un dossier une liste de fichiers commençant par un nombre puis, un tiret et, le nom du fichier que je souhaite ne pas modifier. Le script en python que j'ai fait me renvoie la liste des fichiers dont le nom est parfaitement ce que je veux mais, voilà, il ne modifie rien dans le répertoire !

J'attends bien sûr un ptit coup de main et, merci d'avance.

import re,os

def modif(ndf):
 return re.sub(r'[0-9]+.', "" "", ndf)

path = "e:/stock/open class room"

# liste des fichiers a modifier
liste = os.listdir(path)

# affichage des noms des fichiers
for i, n in enumerate(liste):
 modif(n)

Progliste :
Pour se désinscrire de la liste : mailto:[email protected]?subject=unsubscribe

Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/
Je vous rappelle que les pièces jointe sont activés leur taille est limité à 2 MO
Pour accéder aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en privé, je vous répondrez en privé.

import re,os

def modif(ndf):
        return re.sub('[0-9]+.', '', ndf)

path = "e:/stock/open class room"

# liste des fichiers a modifier
liste = [f for f in os.listdir(path) if os.path.isfile(os.path.join(path, f))]

# renommage des fichiers
for n in liste:
        os.rename(os.path.join(path, n), os.path.join(path, modif(n)))

Répondre à