Hello tous,

Elle a l'air pas mal cette page pour des éternels débutants comme moi... Seul reproche, je trouve discutable le terme francisé de "liste de compréhension" qu'il a utilisé dans le titre de sa page. D'ailleurs il ne le réemploie pas. Même son "compréhension de liste" me paraît unpeu limite. Si j'étais lui j'aurais plutôt dit: liste par compréhension. Ca renvoie aux ensembles, ceux dont on peut lister tous les éléments, souvent de deux manières: soit "par extension", c'est-à-dire littéralement; soit "par compréhension", c'est-à-dire en décrivant les critères qui caractérisent tous les éléments de cet ensemble. Ce qui est bien le cas de cette notion de "comprehension list".

Tout ça pour... affiner la compréhension <sourire>.

J.-F.


Le 20/12/2015 19:48, _Abdel_ a écrit :
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"
<jean-claude.arming...@laposte.net>
To: <progliste@ml.free.fr>
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:progliste-requ...@ml.free.fr?subject=unsubscribe

Pour voir les archives de la liste :
http://www.mail-archive.com/progliste@ml.free.fr/
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é.


Progliste :
Pour se désinscrire de la liste : 
mailto:progliste-requ...@ml.free.fr?subject=unsubscribe

Pour voir les archives de la liste :
http://www.mail-archive.com/progliste@ml.free.fr/       

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é.
        
        

Répondre à