"""Aggiunge ai CSV dell'ultimo ciclo una colonna di potenziale normalizzato. Chiede all'utente il potenziale di riferimento (in V) e aggiunge, per ogni file *_ultimo_ciclo.csv nella cartella, una terza colonna pari a Potential/V - riferimento. I file vengono sovrascritti. """ import csv import sys from pathlib import Path INPUT_SUFFIX = "_ultimo_ciclo" def ask_reference_potential() -> float: while True: raw = input("Potenziale di riferimento (V): ").strip() try: return float(raw) except ValueError: print("Valore non valido, inserisci un numero (es. -0.152).") def normalize_file(path: Path, reference: float) -> None: with path.open("r", encoding="utf-8", newline="") as f: reader = csv.reader(f, delimiter=";") header = next(reader) rows = [(row[0], row[1]) for row in reader] header = [*header, "Potential normalized/V"] new_rows = [] for potential_str, current_str in rows: potential = float(potential_str.replace(",", ".")) normalized = potential - reference new_rows.append((potential_str, current_str, f"{normalized:.3f}".replace(".", ","))) with path.open("w", encoding="utf-8", newline="") as f: writer = csv.writer(f, delimiter=";") writer.writerow(header) writer.writerows(new_rows) def main(argv: list[str]) -> None: folder = Path(argv[1]) if len(argv) > 1 else Path(__file__).parent csv_files = sorted( p for p in folder.glob("*.csv") if p.stem.endswith(INPUT_SUFFIX) ) if not csv_files: print(f"Nessun file *{INPUT_SUFFIX}.csv trovato in {folder}") return reference = ask_reference_potential() for csv_file in csv_files: normalize_file(csv_file, reference) print(f"OK {csv_file.name} (potenziale normalizzato aggiunto)") if __name__ == "__main__": main(sys.argv)