97 lines
No EOL
3.5 KiB
Python
Executable file
97 lines
No EOL
3.5 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
Script pour visualiser les données du fichier suivi_livre.csv.
|
|
Ce script est à utiliser à la place d'exécuter directement le fichier CSV.
|
|
"""
|
|
|
|
import csv
|
|
import sys
|
|
from datetime import datetime
|
|
import os
|
|
|
|
def display_csv_data(csv_file='suivi_livre.csv'):
|
|
"""
|
|
Affiche les données du fichier CSV de suivi de livre de manière formatée.
|
|
"""
|
|
if not os.path.exists(csv_file):
|
|
print(f"Erreur: Le fichier {csv_file} n'existe pas.")
|
|
return False
|
|
|
|
try:
|
|
# Lire le fichier CSV
|
|
with open(csv_file, 'r') as csvfile:
|
|
reader = csv.reader(csvfile, delimiter=';')
|
|
data = []
|
|
for row in reader:
|
|
# Ignorer les lignes de commentaire qui commencent par #
|
|
if row and not row[0].startswith('#'):
|
|
data.append(row)
|
|
|
|
if not data:
|
|
print("Aucune donnée trouvée dans le fichier CSV.")
|
|
return False
|
|
|
|
# Afficher un en-tête
|
|
print("\n=== DONNÉES DE SUIVI DU LIVRE ===\n")
|
|
|
|
# Afficher les colonnes
|
|
print(f"{'Date':<25} {'Mots':<8} {'Intrigues':<10} {'Personnages':<12} {'Mots Perso':<12} {'Chapitres':<10} {'Sous-Chap':<10}")
|
|
print("-" * 90)
|
|
|
|
# Afficher chaque ligne de données
|
|
for row in data:
|
|
if len(row) >= 7: # S'assurer qu'il y a assez de colonnes
|
|
date = datetime.fromisoformat(row[0]).strftime('%Y-%m-%d %H:%M:%S')
|
|
mots = row[1]
|
|
intrigues = row[2]
|
|
personnages = row[3]
|
|
personnages_mots = row[4]
|
|
chapitres = row[5]
|
|
sous_chapitres = row[6]
|
|
|
|
print(f"{date:<25} {mots:<8} {intrigues:<10} {personnages:<12} {personnages_mots:<12} {chapitres:<10} {sous_chapitres:<10}")
|
|
|
|
# Afficher quelques statistiques
|
|
if data:
|
|
last_row = data[-1]
|
|
print("\n=== STATISTIQUES ===\n")
|
|
print(f"Nombre total de mots: {last_row[1]}")
|
|
print(f"Nombre de chapitres: {last_row[5]}")
|
|
print(f"Nombre de personnages: {last_row[3]}")
|
|
|
|
# Calculer la progression depuis la première entrée
|
|
if len(data) > 1:
|
|
first_row = data[0]
|
|
mots_diff = int(last_row[1]) - int(first_row[1])
|
|
print(f"\nProgression depuis le début du suivi: {mots_diff} mots")
|
|
|
|
return True
|
|
|
|
except Exception as e:
|
|
print(f"Erreur lors de la lecture du fichier CSV: {e}")
|
|
return False
|
|
|
|
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'
|
|
|
|
if not display_csv_data(csv_file):
|
|
print("\nPour analyser ces données de manière plus approfondie, utilisez:")
|
|
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 1
|
|
|
|
print("\nPour analyser ces données de manière plus approfondie, utilisez:")
|
|
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()) |