-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathrename-file.py
39 lines (37 loc) · 1.72 KB
/
rename-file.py
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/python3
# -*- coding: utf-8 -*-
# Python 3.7
import os
from glob import iglob
def renomme(repertoire, motifs=['*.ini'], entete="en-GB.", affiche=False):
"""Trouve tous les fichiers du répertoire et de ses sous-répertoires
satisfaisant aux motifs wildcard, et les renomme en leur retirant
l'en-tête de leur nom
"""
# normalise le chemin
repertoire = os.path.abspath(os.path.expanduser(repertoire))
# renomme les fichiers
nbfichiers = 0
for motif in motifs:
for fichier in iglob(os.path.join(repertoire, "**", motif), recursive=True):
if os.path.isfile(fichier): # on ne s'intéresse qu'aux fichiers
# sépare le chemin et le nom de fichier
chemin, nom = os.path.split(fichier)
# calcule le nouveau nom
if nom.startswith(entete):
# ici, il faut renommer!
nom = nom[len(entete):] # supprime l'en-tête
# recalcule le nouveau nom du fichier avec son chemin
fichier2 = os.path.join(chemin, nom)
# renomme
try:
os.rename(fichier, fichier2)
nbfichiers += 1
except WindowsError:
os.remove(fichier)
os.rename(fichier, fichier2)
if affiche: print("Fichier renommé:", fichier, "===>", fichier2)
return nbfichiers # nombre de fichiers renommés
repertoire = r"C:\Users\yanni\Documents\GitHub\flexicontent-translations\resources"
nbfichiers = renomme(repertoire, motifs=['*.ini'], entete="en-GB.", affiche=True)
print("Nombre de fichiers renommés:", nbfichiers)