book-generator-orgmode/fix_csv_execution_improved.py

76 lines
No EOL
2.3 KiB
Python

#!/usr/bin/env python3
"""
Script pour ajouter un en-tête Python au début d'un fichier CSV afin qu'il
puisse être exécuté directement sans erreur et affiche un message d'aide.
"""
import os
import sys
def fix_csv_file(csv_file_path):
"""
Ajoute un en-tête Python au début du fichier CSV pour gérer l'exécution directe.
"""
if not os.path.exists(csv_file_path):
print(f"Erreur: Le fichier {csv_file_path} n'existe pas.")
return False
# Lire le contenu actuel du fichier
with open(csv_file_path, 'r') as f:
content = f.read()
# Vérifier si le fichier commence déjà par le script Python
if content.startswith('#!/usr/bin/env python3'):
print(f"Le fichier {csv_file_path} est déjà protégé.")
return True
# En-tête Python à ajouter au début du fichier
python_header = '''#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Ce fichier est un CSV contenant des données de suivi de livre.
Il n'est pas destiné à être exécuté directement comme un script Python.
Pour analyser ces données, utilisez plutôt:
- follow_progress.py: pour mettre à jour et analyser les statistiques
- generate_dashboard.py: pour générer un tableau de bord visuel
"""
import sys
def main():
print("Ce fichier est un CSV contenant des données de suivi de livre.")
print("Il n'est pas destiné à être exécuté directement comme un script Python.")
print("\\nPour analyser ces données, utilisez plutôt:")
print("- follow_progress.py: pour mettre à jour et analyser les statistiques")
print("- generate_dashboard.py: pour générer un tableau de bord visuel")
return 0
if __name__ == "__main__":
sys.exit(main())
# Les données CSV commencent ci-dessous:
'''
# Ajouter l'en-tête Python au début du fichier
with open(csv_file_path, 'w') as f:
f.write(python_header)
f.write(content)
print(f"Le fichier {csv_file_path} a été protégé contre l'exécution directe.")
return True
def main():
"""
Fonction principale.
"""
# Utiliser le fichier spécifié en argument ou par défaut 'suivi_livre.csv'
if len(sys.argv) > 1:
csv_file = sys.argv[1]
else:
csv_file = 'suivi_livre.csv'
fix_csv_file(csv_file)
if __name__ == "__main__":
main()