Added all
This commit is contained in:
53
file-management/netejar_desuscrits.py
Normal file
53
file-management/netejar_desuscrits.py
Normal file
@@ -0,0 +1,53 @@
|
||||
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}")
|
||||
Reference in New Issue
Block a user