54 lines
1.7 KiB
Python
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}")
|