création backup_manager.py
This commit is contained in:
1 parent
cce13ffa26
commit
ee643eb542
3 files changed
+45
No files matched your search
@@ -0,0 +1,43 @@
|
|||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
def securiser_fichier_excel(chemin_original, code_affaire):
|
||||||
|
"""
|
||||||
|
Crée une copie de sauvegarde d'un fichier Excel avant traitement.
|
||||||
|
Nomenclature : Semaine_Annee_CodeAffaire
|
||||||
|
"""
|
||||||
|
if not os.path.exists(chemin_original):
|
||||||
|
print(f"❌ Erreur : Le fichier '{chemin_original}' est introuvable.")
|
||||||
|
return None
|
||||||
|
|
||||||
|
# 1. Obtenir la date actuelle
|
||||||
|
aujourdhui = datetime.now()
|
||||||
|
annee = aujourdhui.strftime("%Y")
|
||||||
|
semaine = aujourdhui.strftime("%V") # %V donne le numéro de semaine ISO
|
||||||
|
|
||||||
|
# 2. Créer le dossier de sauvegarde s'il n'existe pas
|
||||||
|
dossier_backup = "backups_excel"
|
||||||
|
os.makedirs(dossier_backup, exist_ok=True)
|
||||||
|
|
||||||
|
# 3. Extraire l'extension (.xlsx ou .xlsm)
|
||||||
|
_, extension = os.path.splitext(chemin_original)
|
||||||
|
|
||||||
|
# 4. Construire le nouveau nom
|
||||||
|
nouveau_nom = f"S{semaine}_{annee}_{code_affaire}{extension}"
|
||||||
|
chemin_destination = os.path.join(dossier_backup, nouveau_nom)
|
||||||
|
|
||||||
|
# 5. Copier le fichier
|
||||||
|
shutil.copy2(chemin_original, chemin_destination)
|
||||||
|
print(f"✅ Fichier sécurisé : {chemin_destination}")
|
||||||
|
|
||||||
|
return chemin_destination
|
||||||
|
|
||||||
|
# --- TEST DU MODULE ---
|
||||||
|
if __name__ == "__main__":
|
||||||
|
# Test à blanc : on crée un faux fichier Excel pour vérifier que le script fonctionne
|
||||||
|
fichier_test = "mon_suivi_financier.xlsx"
|
||||||
|
with open(fichier_test, "w") as f:
|
||||||
|
f.write("Données de test")
|
||||||
|
|
||||||
|
securiser_fichier_excel(fichier_test, "CHANTIER_SERFIM_01")
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Données de test
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Données de test
|
||||||
Reference in new issue
Block a user