-
Notifications
You must be signed in to change notification settings - Fork 0
programme
PasRP-Theo edited this page Dec 15, 2024
·
3 revisions
import os
import csv
import pandas as pd
import unittest
def charger_csv(directory):
print("Chargement des fichiers CSV...")
all_data = []
for filename in os.listdir(directory):
if filename.endswith('.csv'):
filepath = os.path.join(directory, filename)
print(f"Chargement du fichier: {filename}")
try:
data = pd.read_csv(filepath, encoding="latin1")
data['Source File'] = filename
all_data.append(data)
except Exception as e:
print(f"Erreur lors du chargement de {filename}: {e}")
if all_data:
return pd.concat(all_data, ignore_index=True)
else:
print("Aucun fichier CSV trouvé dans le répertoire.")
return pd.DataFrame()
def chercher_produit(data, query):
results = data[data['nom du produit'].str.contains(query, case=False, na=False)]
return results
def filtre_par_categorie(data, category):
results = data[data['catégorie'].str.contains(category, case=False, na=False)]
return results if not results.empty else None
def filtre_par_prix(data, min_price, max_price):
try:
results = data[(data['prix unitaire'] >= min_price) & (data['prix unitaire'] <= max_price)]
return results if not results.empty else None
except ValueError:
print("Veuillez entrer des valeurs numériques valides pour les prix.")
return None
def generer_rapport(data):
summary = data.groupby('catégorie').agg({
'quantité': 'sum',
'prix unitaire': 'mean'
}).rename(columns={
'quantité': 'Total Quantité',
'prix unitaire': 'Prix Moyen'
})
print("\n=== Rapport Récapitulatif ===")
print(summary)
export = input("Voulez-vous exporter ce rapport en CSV ? (o/n): ").lower()
if export == 'o':
output_path = input("Entrez le chemin pour enregistrer le fichier (par ex: rapport.csv): ")
# Vérifier si le chemin est un fichier ou un répertoire
if os.path.isdir(output_path):
print(f"Erreur : Le chemin spécifié est un répertoire, pas un fichier. Veuillez indiquer un chemin de fichier.")
else:
summary.to_csv(output_path)
print(f"Rapport exporté avec succès vers {output_path}.")
else:
print("Exportation annulée.")
# Main
if __name__ == "__main__":
data_dir = input("Entrez le chemin du répertoire contenant les fichiers CSV: ")
if not os.path.exists(data_dir):
print("Le chemin du répertoire est incorrect ou introuvable.")
else:
inventory_data = charger_csv(data_dir)
if not inventory_data.empty:
while True:
print("\n=== Gestionnaire d'Inventaire ===")
print("1. Rechercher un produit")
print("2. Filtrer par catégorie")
print("3. Rechercher par plage de prix")
print("4. Générer un rapport récapitulatif")
print("5. Quitter")
choice = input("Votre choix: ")
if choice == "1":
query = input("Entrez le nom du produit ou un mot-clé: ").strip()
results = chercher_produit(inventory_data, query)
print(results if not results.empty else "Aucun produit trouvé.")
elif choice == "2":
category = input("Entrez la catégorie: ").strip()
results = filtre_par_categorie(inventory_data, category)
if results is not None:
print(results)
else:
print("Aucun produit trouvé dans cette catégorie.")
elif choice == "3":
try:
min_price = float(input("Entrez le prix minimum: "))
max_price = float(input("Entrez le prix maximum: "))
results = filtre_par_prix(inventory_data, min_price, max_price)
if results is not None:
print(results)
else:
print("Aucun produit trouvé dans cette plage de prix.")
except ValueError:
print("Veuillez entrer des valeurs numériques valides pour les prix.")
elif choice == "4":
generer_rapport(inventory_data)
elif choice == "5":
print("Merci d'avoir utilisé le Gestionnaire d'Inventaire. Au revoir !")
break
else:
print("Choix invalide. Veuillez réessayer.")
else:
print("Aucune donnée à traiter. Fin du programme.")