408 votes

Renommer des Fichiers en Python

J'essaie de renommer certains fichiers dans un répertoire à l'aide de Python.

Dire que j'ai un fichier appelé CHEESE_CHEESE_TYPE.*** et de vouloir supprimer CHEESE_ donc mon nom du fichier résultant serait CHEESE_TYPE

Je suis en train d'utiliser l' os.path.split , mais il ne fonctionne pas correctement. J'ai également étudié à l'aide de manipulations de chaînes, mais n'ont pas été couronnés de succès.

644voto

Messa Points 5988

Voulez-vous quelque chose de ce genre?

$ ls
cheese_cheese_type.bar  cheese_cheese_type.foo
$ python
>>> import os
>>> for filename in os.listdir("."):
...  if filename.startswith("cheese_"):
...    os.rename(filename, filename[7:])
... 
>>> 
$ ls
cheese_type.bar  cheese_type.foo

38voto

bukzor Points 11085

Voici un script basé sur votre nouveau commentaire.

#!/usr/bin/env python
from os import rename, listdir

badprefix = "cheese_"
fnames = listdir('.')

for fname in fnames:
    if fname.startswith(badprefix*2):
        rename(fname, fname.replace(badprefix, '', 1))

23voto

Le code suivant devrait fonctionner. Il prend chaque nom de fichier dans le répertoire courant, si le nom de fichier contient le modèle de CHEESE_CHEESE_ il est renommé. Si non rien n'est fait pour le nom de fichier.

import os
for fileNmae in os.listdir("."):
    os.rename(fileName, fileName.replace("CHEESE_CHEESE_", "CHEESE_"))

16voto

darelf Points 754

En supposant que vous êtes déjà dans le répertoire, et que les 8 premiers caractères de votre commentaire vrai toujours. (Bien que "CHEESE_" est de 7 caractères... ? Le cas échéant, modifiez le 8 ci-dessous de 7)

from glob import glob
from os import rename
for fname in glob('*.prj'):
    rename(fname, fname[8:])

7voto

krs1 Points 834

Essayez ceci:

import os
import shutil

for file in os.listdir(dirpath):
    newfile = os.path.join(dirpath, file.split("_",1)[1])
    shutil.move(os.path.join(dirpath,file),newfile)

Je suis en supposant que vous ne souhaitez pas supprimer l'extension de fichier, mais vous pouvez tout simplement faire la même chose split avec des périodes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X