Files
scripts/file-management/netejar_desuscrits.py
Guillem Hernandez Sola da6dabcc62 Added all
2026-04-07 19:37:59 +02:00

54 lines
1.7 KiB
Python

import csv
import sys
import os
# Comprovem que s'ha passat el fitxer com a argument
if len(sys.argv) < 2:
print("❌ Error: Has d'indicar la ruta del fitxer CSV.")
print("💡 Ús correcte: python netejar_desuscrits.py /ruta/al/Newsletter_Combinat_Final.csv")
sys.exit(1)
fitxer_origen = sys.argv[1].strip("'").strip('"').strip()
if not os.path.isfile(fitxer_origen):
print(f"❌ Error: No s'ha trobat el fitxer '{fitxer_origen}'.")
sys.exit(1)
fitxer_desti = fitxer_origen.replace(".csv", "_Actius.csv")
usuaris_eliminats = 0
usuaris_actius = 0
print(f"🔍 Analitzant el fitxer: {fitxer_origen}")
with open(fitxer_origen, 'r', encoding='utf-8') as f_in, \
open(fitxer_desti, 'w', newline='', encoding='utf-8') as f_out:
lector = csv.reader(f_in, delimiter=';')
escrivent = csv.writer(f_out, delimiter=';')
# Llegim i escrivim la capçalera
capcalera = next(lector)
escrivent.writerow(capcalera)
# Busquem l'índex de la columna de desuscripció
try:
index_unsub = capcalera.index("Unsubscribe_Date")
except ValueError:
print("❌ Error: No s'ha trobat la columna 'Unsubscribe_Date' al fitxer.")
sys.exit(1)
# Filtrem les files
for fila in lector:
# Si la columna està buida, l'usuari és actiu
if len(fila) > index_unsub and not fila[index_unsub].strip():
escrivent.writerow(fila)
usuaris_actius += 1
else:
usuaris_eliminats += 1
print("✅ Neteja completada amb èxit!")
print(f"📉 Usuaris desuscrits eliminats: {usuaris_eliminats}")
print(f"📈 Usuaris actius conservats: {usuaris_actius}")
print(f"📄 Nou fitxer creat a: {fitxer_desti}")