#!/usr/bin/env python3 import csv import sys from pathlib import Path def clean_csv_file(file_path: Path): """ Nettoie un CSV directement en place : - remplace "NULL" par "" - supprime les espaces parasites - force le même nombre de colonnes que l'en-tête """ cleaned_rows = [] with open(file_path, "r", encoding="utf-8-sig", newline="") as infile: reader = csv.reader(infile) try: header = next(reader) except StopIteration: print(f"[⚠️] Fichier vide : {file_path}") return nb_cols = len(header) cleaned_rows.append([h.strip() for h in header]) for i, row in enumerate(reader, start=2): # Ajuste le nombre de colonnes if len(row) < nb_cols: row.extend([""] * (nb_cols - len(row))) elif len(row) > nb_cols: row = row[:nb_cols] # Nettoyage cellule par cellule row = [cell.strip().replace("NULL", "") for cell in row] cleaned_rows.append(row) # Réécriture dans le même fichier with open(file_path, "w", encoding="utf-8", newline="") as outfile: writer = csv.writer(outfile) writer.writerows(cleaned_rows) print(f"[✔] Nettoyé : {file_path}") def main(): if len(sys.argv) > 1: base_dir = Path(sys.argv[1]) else: base_dir = Path("bdd/data_test") print(f"🔎 Nettoyage des CSV dans : {base_dir}") for file_path in base_dir.glob("*.csv"): clean_csv_file(file_path) print(f"✅ Terminé. Les fichiers CSV ont été écrasés (nettoyés en place).") if __name__ == "__main__": main()