Bonjour à tous,
j'essaye de renommer des fichiers ayant la structure suivante:
XXXX_(nom d'origine)-suffixe.extension (où X correspond à un chiffre)
en: (nom modifié)-suffixe.extension à partir de listes de correspondance entre nom d'origine et nom modifié.
En tulisant os.rename() Pas de problèmes pour ce qui est de rechercher les fichiers correspondants via des expression régulières par contre je n'arrive pas à trouver comment supprimer le préfixe "XXXX_" dans tout les noms de fichiers via une expression régulière (ce qui m'éviterai d'avoir à connaitre le préfixe pour chaque fichier et de les supprimer)
Voiçi le code (sans doute affreux) que j'ai jusque là:
comment puis modifier la boucle de changement de nom pour lui permettre de recherche l'expression régulière "^(.){4}_" au lieu de "prefixe"?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 #!/usr/bin/python # -*- coding:Utf-8 -*- import os import re #Liste recuperant les fichiers a renommer Liste=[] #Liste contenant les nouveaux noms des fichiers ListeNouveauNom=[] #Liste contenant les anciens noms des fichiers ListeAncienNom=[] #fichier source: #Créer liste des dossier Liste = os.listdir("/media/DATA/ysevellec/script_test/") #ancien noms prend les noms à changer et FichierAncien = open('AncienNom.txt', 'r') #nom du fichier contenant les noms à changer for line in FichierAncien: ListeAncienNom.append(line.strip()) FichierNouveau = open('NouveauNom.txt', 'r') #fichier contenant les nouveaux noms for line in FichierNouveau: ListeNouveauNom.append(line.strip()) #renommer les fichiers à partir des deux listes for i in range(0,len(ListeAncienNom)): rech=re.compile("^(.){4}_"+ListeAncienNom[i]+".txt") for fichier in os.listdir("/media/DATA/ysevellec/script_test/"): if rech.match(fichier): print(ListeAncienNom[i]+" trouvé") #test du module try: os.rename("prefixe"+ListeAncienNom[i]+".txt",ListeNouveauNom[i]+".fastq") except: print ListeAncienNom[i]+" n'a pas été renommé"
merci d'avance pour vos conseils.
Partager