import csv
# Diviser un CSV en N fichiers de tailles équilibrées, sans ligne vide parasite
def split_csv(input_path, output_prefix, n_parts=4):
with open(input_path, newline='', encoding='utf-8') as f:
reader = csv.reader(f)
header = next(reader)
rows = [r for r in reader if r] # ignore les lignes vides
total = len(rows)
print(f"Total lignes détectées : {total}")
base = total // n_parts
remainder = total % n_parts # réparti sur les premiers fichiers
start = 0
for i in range(n_parts):
size = base + (1 if i < remainder else 0)
chunk = rows[start : start + size]
start += size
with open(f"{output_prefix}_{i+1}.csv", "w", newline='', encoding='utf-8') as out:
writer = csv.writer(out)
writer.writerow(header)
writer.writerows(chunk)
print(f"{output_prefix}_{i+1}.csv : {len(chunk)} lignes")
split_csv("mon_fichier.csv", "sortie", n_parts=4)