J'ai un grand ensemble d'images avec l'extension .PNG (disons image00.PNG). Je veux le convertir en .png (minuscule). J'ai reçu un script sur Internet, mais je ne parviens pas à le traiter.

Voici le script:

files = os.listdir(cur_dir)
for filename in files:
    file_ext = os.path.splitext(filename)[1]
    if old_ext == file_ext:
        newfile = filename.replace(old_ext, new_ext)
        os.rename(filename, newfile)

Lorsque j'essaie de l'exécuter sur le terminal, j'obtiens l'erreur:

NameError: name 'filename' is not defined

Quel pourrait être le problème?

0
gopal 29 sept. 2011 à 12:13

5 réponses

Meilleure réponse

Essayez ceci, cela fonctionne pour de vrai (et ne renommez pas PNGX.PNG en pngX.png;)):

import os

files = os.listdir(".")
for filename in files:
    file_wo_ext, file_ext = os.path.splitext(filename)
    if file_ext == ".PNG":
        newfile = file_wo_ext + ".png"
        os.rename(filename, newfile)
5
Cédric Julien 29 sept. 2011 à 08:26

Si le répertoire de travail actuel n'est pas cur_dir, il échoue. En effet, os.listdir() renvoie uniquement la liste des noms de fichiers, sans chemin d'accès. Vous devez changer pour

os.rename(os.path.join(cur_dir, filename), os.path.join(cur_dir, newfile))

.

0
glglgl 29 sept. 2011 à 08:18

Permet de le faire de cette façon:

import os
for filename in os.listdir(cur_dir):
    file_ext = os.path.splitext(filename)[1]
    if file_ext == '.PNG':
        newfile = filename.replace(file_ext, '.png')
        os.rename(cur_dir+'/'+filename, cur_dir+'/'+newfile)
0
Aamir Adnan 29 sept. 2011 à 08:51

Ceci est un script python. Procédez comme suit si vous souhaitez utiliser python

$ python
> import os
> old_ext = "PNG"
> new_ext = "png"
> files = os.listdir(cur_dir)
> for filename in files:
>   file_ext = os.path.splitext(filename)[1]
>   if old_ext == file_ext: 
>      newfile = filename.replace(old_ext, new_ext)
>      os.rename(filename, newfile)
>
>
>exit()

Mais cela est belliciste et ne fonctionnera probablement pas.

Je ferais ça

$ rename .PNG .png *.PNG

Via ici

-1
rh0dium 29 sept. 2011 à 08:22

Vous devez définir old_ext à .PNG et new_ext à .png.

0
glglgl 29 sept. 2011 à 08:20