feat: Bereinigung (PURGE) vor Sivas-Export und zusammengefasste CSV je Dispogruppe
EXPORTSIVAS bereinigt die Zeichnung vorab per -PURGE (abschaltbar ueber *csv-bereinigen-vor-export*). export_sivas.py schreibt zusaetzlich je Dispogruppe eine Datei <stamm>_zusammengefasst_dispo<N>.csv. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -58,6 +58,7 @@ items_zusammenfassen. output.csv selbst bleibt unveraendert.
|
||||
import json
|
||||
import sys
|
||||
import os
|
||||
import re
|
||||
|
||||
from export_blockpatterns import (load_patterns, load_export_cfg, cfg_path_from_env,
|
||||
matches_any, csv_quote, safe_float, safe_int)
|
||||
@@ -1184,6 +1185,13 @@ def zusammengefasster_dateiname(output_csv):
|
||||
return f"{stamm}_zusammengefasst{endung}"
|
||||
|
||||
|
||||
def dispogruppen_dateiname(output_csv, dispo):
|
||||
"""z.B. "500651_sivas.csv", "10" -> "500651_sivas_zusammengefasst_dispo10.csv"."""
|
||||
stamm, endung = os.path.splitext(output_csv)
|
||||
sauber = re.sub(r"[^0-9A-Za-z_-]", "_", str(dispo)) or "leer"
|
||||
return f"{stamm}_zusammengefasst_dispo{sauber}{endung}"
|
||||
|
||||
|
||||
def items_zusammenfassen(items):
|
||||
"""Fasst Zeilen zusammen, die sich nur in Nr, Anzahl und IDs
|
||||
unterscheiden: Anzahl wird addiert, die IDs werden (ohne Dubletten, in
|
||||
@@ -1261,6 +1269,18 @@ def main():
|
||||
print(f"[export_sivas] Zusammengefasste CSV geschrieben: {output_csv_zus} "
|
||||
f"({len(items_zus)} Zeilen)")
|
||||
|
||||
# Je Dispogruppe eine eigene zusammengefasste Datei, z.B.
|
||||
# "<stamm>_zusammengefasst_dispo10.csv" (Nr je Datei neu gezaehlt).
|
||||
for dispo in sorted({str(i["dispgruppe"]) for i in items_zus}):
|
||||
teil = [i for i in items_zus if str(i["dispgruppe"]) == dispo]
|
||||
teil = [dict(i, nr=n) for n, i in enumerate(teil, 1)]
|
||||
pfad = dispogruppen_dateiname(output_csv, dispo)
|
||||
with open(pfad, "w", encoding="utf-8") as f:
|
||||
f.write(header + "\n")
|
||||
for item in teil:
|
||||
f.write(format_csv_line(item) + "\n")
|
||||
print(f"[export_sivas] Dispogruppe {dispo}: {pfad} ({len(teil)} Zeilen)")
|
||||
|
||||
# Zweite, lesbare Kopie fuer die manuelle Pruefung (Merkmalnummer +
|
||||
# Bezeichnung aus cfg/Merkmalsstamm_in_Sivas.xlsx) - wird von Sivas
|
||||
# selbst NICHT eingelesen, nur output_csv ist der eigentliche Import.
|
||||
|
||||
Reference in New Issue
Block a user