Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/03/2008, à 17:02

figarojuju

[Résolu] Python et os.rename(...)

Bonjour,
je m'amuse à coder un script qui re-dimensionne les images du répertoire courant et les place dans un nouveau répertoire nommé "vignette".

import Image, glob, os
#degre de miniaturisation
echelle=2
i=0
#format des photos
format="*JPG"
#je mets dans une liste toutes les images du répertoire correspondant au format recherché
malist=glob.glob(format)
#je crée le répertoire dans lequel je veux sauvegarder mes images miniaturisées
os.mkdir("vignette")

#boucle parcourant la liste des images du répertoire
for photos in malist:
	img="img"+str(i)
	img=Image.open(malist[i])	#ouverture des images
	tailleDepart=img.size
	tailleVoulue=list(tailleDepart)
	tailleVoulue[0]=tailleVoulue[0]/echelle
	tailleVoulue[1]=tailleVoulue[1]/echelle
	out="out"+str(i)
	out=img.resize(tuple(tailleVoulue))	#enregistre les nouvelles images
	miniature="miniature"+str(i)+".JPG"
	out.save(miniature)
	i=i+1
	os.rename(miniature,"./vignette")	#deplace les nouvelles images dans mon répertoire de sauvegardes des miniatures

Comme cela. Mais, ça bug...
Cela vient de la façon dont j'utilise os.rename mais je n'ai pas calé la bonne syntaxe malgré mes recherches sur l'internet. Pourriez-vous m'aider?
Merci et à bientôt

Dernière modification par figarojuju (Le 30/04/2008, à 16:13)


Ubuntu: Hardy Heron

Hors ligne

#2 Le 22/03/2008, à 18:55

PMdomine

Re : [Résolu] Python et os.rename(...)

Salut !

Pourrais-tu nous donner le message d'erreur ?
Sinon, ton usage de os.rename n'est effectivement pas bon : il attend deux noms de fichier, alors que tu donnes en second argument un nom de dossier (« ./vignette »). Peut-être que ça fonctionnera avec :

os.rename(miniature, os.path.join("vignette", miniature))

« Mais à quoi te sert Python ?
--- À tout ! »

Hors ligne

#3 Le 22/03/2008, à 19:43

figarojuju

Re : [Résolu] Python et os.rename(...)

Merci,
cela marche parfaitement maintenant:

import Image, glob, os
#degre de miniaturisation
echelle=2
i=0
#format des photos
format="*JPG"
#je mets dans une liste toutes les images du repertoire correspondant au format recherche
malist=glob.glob(format)
#je cree le repertoire dans lequel je veux sauvegarder mes images miniaturisees
os.mkdir("vignette")

#boucle parcourant la liste des images du repertoire
for photos in malist:
	img="img"+str(i)
	img=Image.open(malist[i])
	tailleDepart=img.size
	tailleVoulue=list(tailleDepart)
	tailleVoulue[0]=tailleVoulue[0]/echelle
	tailleVoulue[1]=tailleVoulue[1]/echelle
	out="out"+str(i)
	out=img.resize(tuple(tailleVoulue))
	miniature="miniature"+str(i)+".JPG"
	out.save(miniature)
	i=i+1
	os.rename(miniature, os.path.join("vignette", miniature))

Bonne soirée!:D


Ubuntu: Hardy Heron

Hors ligne

#4 Le 22/03/2008, à 19:49

figarojuju

Re : [Résolu] Python et os.rename(...)

Et en m'inspirant de ce que vous venez de me montrer, j'ai tout simplement écrit:

out.save(os.path.join("vignette", miniature))

ce qui me gagne une étape...:)
Bonne soirée!!


Ubuntu: Hardy Heron

Hors ligne

#5 Le 22/03/2008, à 22:14

PMdomine

Re : [Résolu] Python et os.rename(...)

Oui, j'y ai pensé ensuite ... c'est non seulement plus simple, mais aussi plus souple (n'écrase pas d'éventuels autres fichiers) et plus élégant.
Je précise aussi que j'utilise os.path.join pour concaténer des chemins (vignette + machin.jpg => vignette/machin.jpg) indépendament de la plateforme : sous Windows, ça donnera vignette\machin.jpg, sous certains Mac vignette:machin.jpg, etc. . Bref, le script sera vraiment multi-plateforme.


« Mais à quoi te sert Python ?
--- À tout ! »

Hors ligne