44 lines
1.1 KiB
Python
44 lines
1.1 KiB
Python
import os
|
|
import csv
|
|
from datetime import datetime
|
|
from api.module import Module
|
|
from api.io_port import InPort, CSVTableType
|
|
|
|
|
|
def factory():
|
|
m = Module("CSVWriter")
|
|
|
|
inp = InPort("features", CSVTableType(columns=["name", "value"]))
|
|
m.add_in_port(inp)
|
|
|
|
def execute(inputs):
|
|
data = inputs["features"]
|
|
|
|
rows = []
|
|
try:
|
|
import pandas as pd
|
|
if hasattr(data, "iterrows"):
|
|
for _, row in data.iterrows():
|
|
rows.append({"name": row[0], "value": row[1]})
|
|
else:
|
|
rows = list(data)
|
|
except Exception:
|
|
rows = list(data)
|
|
|
|
os.makedirs("results", exist_ok=True)
|
|
ts = datetime.now().strftime("%Y%m%d_%H%M%S")
|
|
path = os.path.join("results", f"features_{ts}.csv")
|
|
|
|
with open(path, "w", newline="", encoding="utf-8") as f:
|
|
w = csv.writer(f)
|
|
w.writerow(["name", "value"])
|
|
for r in rows:
|
|
w.writerow([r["name"], r["value"]])
|
|
|
|
return {
|
|
"csv_path": path
|
|
}
|
|
|
|
m.execute = execute
|
|
return m
|