Je souhaite renommer des fichiers à partir d'une liste de nouveaux noms
contenus dans un objet liste...
Voici un code minimal qui ne fonctionne pas :
***
#!/usr/bin/python
#-*- coding: utf-8 -*-
from os import listdir, getcwd, rename
import re
list_names=['new_name1','new_name2']
list_files = listdir(getcwd())
#only JPG's !
filtre = re.compile("jpg$", re.IGNORECASE)
list_jpg = filter(filtre.search, list_files)
#strip all elements of list list_jpg
list_jpg_strip=[]
for nom in list_jpg:
#print nom.strip()
list_jpg_strip.append(nom.strip())
#let's rename :
i=0
while i <= len(list_jpg_strip):
rename(list_jpg_strip[i],list_names[i])
i=i+1
****
Le message d'erreur est :
File "ecm.py", line 17, in <module>
rename(list_jpg_strip[i],list_names[i])
OSError: [Errno 2] No such file or directory
Mais pourtant tout existe bien dans le repertoire où je lance ce script.
Bloody hell ! :-s
Une idée ?
Merci.
Rémi.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
alain
Bonjour,
Je souhaite renommer des fichiers à partir d'une liste de nouveaux noms contenus dans un objet liste... Voici un code minimal qui ne fonctionne pas : *** #!/usr/bin/python #-*- coding: utf-8 -*- from os import listdir, getcwd, rename import re list_names=['new_name1','new_name2'] list_files = listdir(getcwd()) #only JPG's ! filtre = re.compile("jpg$", re.IGNORECASE) list_jpg = filter(filtre.search, list_files) #strip all elements of list list_jpg list_jpg_strip=[] for nom in list_jpg: #print nom.strip() list_jpg_strip.append(nom.strip()) #let's rename : i=0 while i <= len(list_jpg_strip): rename(list_jpg_strip[i],list_names[i]) i=i+1 **** Le message d'erreur est : File "ecm.py", line 17, in <module> rename(list_jpg_strip[i],list_names[i]) OSError: [Errno 2] No such file or directory Mais pourtant tout existe bien dans le repertoire où je lance ce script. Bloody hell ! :-s Une idée ? Merci. Rémi.
PS : crossposté sur clp, suivi sur fclp A quoi te sert la fonction strip ?
A mon avis il n'y a pas d'espace avant ou apres le nom des fichiers.
Qu'est-ce que ca donne si tu fais afficher les deux noms de fichiers parametres de ton rename ? Est-ce que ca plante a la premiere iteration, seconde ou plus...
Bonjour,
Je souhaite renommer des fichiers à partir d'une liste de nouveaux noms
contenus dans un objet liste...
Voici un code minimal qui ne fonctionne pas :
***
#!/usr/bin/python
#-*- coding: utf-8 -*-
from os import listdir, getcwd, rename
import re
list_names=['new_name1','new_name2']
list_files = listdir(getcwd())
#only JPG's !
filtre = re.compile("jpg$", re.IGNORECASE)
list_jpg = filter(filtre.search, list_files)
#strip all elements of list list_jpg
list_jpg_strip=[]
for nom in list_jpg:
#print nom.strip()
list_jpg_strip.append(nom.strip())
#let's rename :
i=0
while i <= len(list_jpg_strip):
rename(list_jpg_strip[i],list_names[i])
i=i+1
****
Le message d'erreur est :
File "ecm.py", line 17, in <module>
rename(list_jpg_strip[i],list_names[i])
OSError: [Errno 2] No such file or directory
Mais pourtant tout existe bien dans le repertoire où je lance ce script.
Bloody hell ! :-s
Une idée ?
Merci.
Rémi.
PS : crossposté sur clp, suivi sur fclp
A quoi te sert la fonction strip ?
A mon avis il n'y a pas d'espace avant ou apres le nom des fichiers.
Qu'est-ce que ca donne si tu fais afficher les deux noms de fichiers
parametres de ton rename ?
Est-ce que ca plante a la premiere iteration, seconde ou plus...
Je souhaite renommer des fichiers à partir d'une liste de nouveaux noms contenus dans un objet liste... Voici un code minimal qui ne fonctionne pas : *** #!/usr/bin/python #-*- coding: utf-8 -*- from os import listdir, getcwd, rename import re list_names=['new_name1','new_name2'] list_files = listdir(getcwd()) #only JPG's ! filtre = re.compile("jpg$", re.IGNORECASE) list_jpg = filter(filtre.search, list_files) #strip all elements of list list_jpg list_jpg_strip=[] for nom in list_jpg: #print nom.strip() list_jpg_strip.append(nom.strip()) #let's rename : i=0 while i <= len(list_jpg_strip): rename(list_jpg_strip[i],list_names[i]) i=i+1 **** Le message d'erreur est : File "ecm.py", line 17, in <module> rename(list_jpg_strip[i],list_names[i]) OSError: [Errno 2] No such file or directory Mais pourtant tout existe bien dans le repertoire où je lance ce script. Bloody hell ! :-s Une idée ? Merci. Rémi.
PS : crossposté sur clp, suivi sur fclp A quoi te sert la fonction strip ?
A mon avis il n'y a pas d'espace avant ou apres le nom des fichiers.
Qu'est-ce que ca donne si tu fais afficher les deux noms de fichiers parametres de ton rename ? Est-ce que ca plante a la premiere iteration, seconde ou plus...
MC
Bonjour !
En fait, ton script fonctionne. Remplace seulement : while i <= len par while i < len
pour éviter de chercher un fichier de trop.
Attention : on ne peut lancer le script qu'une fois (car les nouveau noms n'ont plus l'extension .jpg)
-- @-salutations
Michel Claveau
Bonjour !
En fait, ton script fonctionne.
Remplace seulement :
while i <= len
par
while i < len
pour éviter de chercher un fichier de trop.
Attention : on ne peut lancer le script qu'une fois (car les nouveau
noms n'ont plus l'extension .jpg)
En fait, ton script fonctionne. Remplace seulement : while i <= len par while i < len
pour éviter de chercher un fichier de trop.
Attention : on ne peut lancer le script qu'une fois (car les nouveau noms n'ont plus l'extension .jpg)
-- @-salutations
Michel Claveau
r
Le Sat, 15 Sep 2007 05:00:40 +0200, MC a écrit:
Bonjour !
En fait, ton script fonctionne. Remplace seulement : while i <= len par while i < len
pour éviter de chercher un fichier de trop.
oui en effet, c'est ce qui n'allait pas ! De plus, j'avais mis une espace d'un fichier test.jpg Pour éviter cela peut-être qu'il est inutile d'utiliser un strip() sur listdir(getcwd()) Merci. Rémi.
Le Sat, 15 Sep 2007 05:00:40 +0200, MC a écrit:
Bonjour !
En fait, ton script fonctionne.
Remplace seulement :
while i <= len
par
while i < len
pour éviter de chercher un fichier de trop.
oui en effet, c'est ce qui n'allait pas !
De plus, j'avais mis une espace d'un fichier test.jpg
Pour éviter cela peut-être qu'il est inutile d'utiliser un strip() sur
listdir(getcwd())
Merci.
Rémi.
En fait, ton script fonctionne. Remplace seulement : while i <= len par while i < len
pour éviter de chercher un fichier de trop.
oui en effet, c'est ce qui n'allait pas ! De plus, j'avais mis une espace d'un fichier test.jpg Pour éviter cela peut-être qu'il est inutile d'utiliser un strip() sur listdir(getcwd()) Merci. Rémi.
r
Le Fri, 14 Sep 2007 22:35:00 +0200, alain a écrit:
[...]
A quoi te sert la fonction strip ? A mon avis il n'y a pas d'espace avant ou apres le nom des fichiers.
Oui mais une fausse manip m'en a fait rajouter un (sur un fichier jpg) :-s
J'ai utilisé la fonction strip car la liste des nouveaux noms de fichiers (contnue dans un fichier texte) est : ['tatan', 'teten'] C'est pour éliminer les 'n'
Qu'est-ce que ca donne si tu fais afficher les deux noms de fichiers parametres de ton rename ?
En fait ça marchait sauf que les fichier cherché s'appelait "1.jpg" et que le fichier présent était "1.jpg " (espace après jpg). Merci. Rémi.
Le Fri, 14 Sep 2007 22:35:00 +0200, alain a écrit:
[...]
A quoi te sert la fonction strip ?
A mon avis il n'y a pas d'espace avant ou apres le nom des fichiers.
Oui mais une fausse manip m'en a fait rajouter un (sur un fichier jpg) :-s
J'ai utilisé la fonction strip car la liste des nouveaux noms de fichiers
(contnue dans un fichier texte) est : ['tatan', 'teten']
C'est pour éliminer les 'n'
Qu'est-ce que ca donne si tu fais afficher les deux noms de fichiers
parametres de ton rename ?
En fait ça marchait sauf que les fichier cherché s'appelait "1.jpg" et que
le fichier présent était "1.jpg " (espace après jpg).
Merci.
Rémi.
Le Fri, 14 Sep 2007 22:35:00 +0200, alain a écrit:
[...]
A quoi te sert la fonction strip ? A mon avis il n'y a pas d'espace avant ou apres le nom des fichiers.
Oui mais une fausse manip m'en a fait rajouter un (sur un fichier jpg) :-s
J'ai utilisé la fonction strip car la liste des nouveaux noms de fichiers (contnue dans un fichier texte) est : ['tatan', 'teten'] C'est pour éliminer les 'n'
Qu'est-ce que ca donne si tu fais afficher les deux noms de fichiers parametres de ton rename ?
En fait ça marchait sauf que les fichier cherché s'appelait "1.jpg" et que le fichier présent était "1.jpg " (espace après jpg). Merci. Rémi.
Pierre Quentel
Bonjour,
================== i=0 while i <= len(list_jpg_strip): rename(list_jpg_strip[i],list_names[i]) i=i+1 ==================
En "bon" Python on fait rarement ce genre de boucle avec un indice. Au lieu de
i=0 while i < len(liste): fais_qqch_avec(liste[i]) i = i+1
for element in liste: fais_qqch_avec(element)
On économise 2 lignes, et c'est plus lisible
Quand on veut travailler sur plusieurs listes en parallèle :
for elt1,elt2 in zip(liste1,liste2): fais_qqch_avec(elt1,elt2)
Dans ton exemple ça donnerait :
for ancien,nouveau in zip(list_jpg_strip,list_names): rename(ancien,nouveau)
A+ Pierre
Bonjour,
==================
i=0
while i <= len(list_jpg_strip):
rename(list_jpg_strip[i],list_names[i])
i=i+1
==================
En "bon" Python on fait rarement ce genre de boucle avec un indice. Au
lieu de
i=0
while i < len(liste):
fais_qqch_avec(liste[i])
i = i+1
for element in liste:
fais_qqch_avec(element)
On économise 2 lignes, et c'est plus lisible
Quand on veut travailler sur plusieurs listes en parallèle :
for elt1,elt2 in zip(liste1,liste2):
fais_qqch_avec(elt1,elt2)
Dans ton exemple ça donnerait :
for ancien,nouveau in zip(list_jpg_strip,list_names):
rename(ancien,nouveau)
================== i=0 while i <= len(list_jpg_strip): rename(list_jpg_strip[i],list_names[i]) i=i+1 ==================
En "bon" Python on fait rarement ce genre de boucle avec un indice. Au lieu de
i=0 while i < len(liste): fais_qqch_avec(liste[i]) i = i+1
for element in liste: fais_qqch_avec(element)
On économise 2 lignes, et c'est plus lisible
Quand on veut travailler sur plusieurs listes en parallèle :
for elt1,elt2 in zip(liste1,liste2): fais_qqch_avec(elt1,elt2)
Dans ton exemple ça donnerait :
for ancien,nouveau in zip(list_jpg_strip,list_names): rename(ancien,nouveau)
A+ Pierre
r
Le Sun, 16 Sep 2007 00:40:39 -0700, Pierre Quentel a écrit:
Bonjour,
================= > i=0 while i <= len(list_jpg_strip): rename(list_jpg_strip[i],list_names[i]) i=i+1 ================= > En "bon" Python on fait rarement ce genre de boucle avec un indice. [...]
Merci beaucoup pour cette remarque et le code qui suit ! :-) Je me doutais que ce n'était pas très orthodoxe. @+ Rémi.
Le Sun, 16 Sep 2007 00:40:39 -0700, Pierre Quentel a écrit:
Bonjour,
================= > i=0
while i <= len(list_jpg_strip):
rename(list_jpg_strip[i],list_names[i])
i=i+1
================= >
En "bon" Python on fait rarement ce genre de boucle avec un indice.
[...]
Merci beaucoup pour cette remarque et le code qui suit ! :-)
Je me doutais que ce n'était pas très orthodoxe.
@+
Rémi.
Le Sun, 16 Sep 2007 00:40:39 -0700, Pierre Quentel a écrit:
Bonjour,
================= > i=0 while i <= len(list_jpg_strip): rename(list_jpg_strip[i],list_names[i]) i=i+1 ================= > En "bon" Python on fait rarement ce genre de boucle avec un indice. [...]
Merci beaucoup pour cette remarque et le code qui suit ! :-) Je me doutais que ce n'était pas très orthodoxe. @+ Rémi.