File Export
Shippingfile_exportWrite the incoming value (Signal/Bundle/DataFrame/Matrix) to a CSV/TSV/TXT file
Signature
Inputs
inputAny— The value to serialize. Any CaptyseValue — Signal, SignalBundle, DataFrame, Matrix, and so on. Unwired = clean no-op.
Parameters
| Key | Type | Default | Notes |
|---|---|---|---|
file_path | path | Destination file (save picker, extensions csv/tsv/txt/dat). Format is taken from the extension when Format = Auto. | |
format | enum | auto | one of: auto, csv, tsv, txt |
auto_export | bool | false | Write the file automatically on every run. Off = use the Export Now button in the inspector. |
delimiter | enum | comma | one of: comma, semicolon, tab, space, pipe |
include_header | bool | true | Write the column-name row (with 'name [unit]' for united columns). |
include_index | bool | false | Prepend a 0-based row-index column. |
decimal_sep | enum | . | one of: ., , |
precision | int | -1 | Decimal places for floats (-1 = full / shortest round-trip). |
line_ending | enum | lf | one of: lf, crlf |
null_token | text | Text written for a missing/null cell (empty by default). | |
append_mode | bool | false | Append to the file instead of overwriting it. |
Description
File Export is a sink node: one optional input port, no outputs. It serializes any incoming CaptyseValue — Signal, SignalBundle, DataFrame, Matrix, and so on — to delimited text (CSV / TSV / TXT) through the Rust io layer. Column headers are written as name [unit] for united columns, so a round trip through File Import recovers the physical units.
Writing is deliberately gated. auto_export defaults to off, so a normal (or live 20 Hz) run never touches the disk on every tick; the on-demand path is the inspector's Export Now button. When auto_export is on, the file is written each run — an empty file_path in that case is a hard error so a misconfiguration is visible, while an unwired input is a clean no-op (the run isn't aborted).
Formatting is fully controllable: delimiter, include_header, include_index, decimal_sep, precision, line_ending, null_token, and append_mode. precision uses the convention that any negative value (including the -1 default) means full / shortest round-trip precision, while a value fixes the number of decimals. append_mode writes to the end of an existing file rather than overwriting, which — combined with a live run — turns the node into a rolling logger.
File Export is stateless: it holds no memory across evaluations. Its only side effect is the file it writes; it alters nothing in the graph's numerical result.
Examples
Export a signal on demand
Wire a processed Signal into input, set file_path = out.csv, leave auto_export = false. Nothing is written during runs; clicking Export Now in the inspector writes a two-column CSV time,value (value header carrying the signal's unit, e.g. value [V]).
Fixed-precision European CSV
Set decimal_sep = ,, delimiter = ;, precision = 3. A value of is written as 1,235 in a semicolon-separated file — the standard shape many European spreadsheet tools expect.
Rolling log via append
Turn on auto_export and append_mode, turn off include_header. Each run appends the current input's rows to the file, accumulating a growing log across a live capture session rather than overwriting.
Applications
- Saving processed signals, spectra, or tables to CSV/TSV for use in external tools (spreadsheets, MATLAB, Python).
- Producing locale-correct exports with comma decimals and semicolon delimiters for European workflows.
- Appending live results to a rolling log file during a capture session for later offline analysis.
- Archiving a DataFrame or Matrix with fixed decimal precision for reproducible, diff-friendly artifacts.
Neat
Auto-export is off by default so the disk is never hammered on a live tick; the normal path is the inspector's Export Now button, keeping runs pure.
The `input` port accepts literally any CaptyseValue — the same node serializes a Matrix, a SignalBundle, or a DataFrame with no configuration change.
Precision uses a signed convention: -1 (default) means shortest round-trip that reparses to the exact same float, so exports are lossless unless you deliberately fix the decimals.
Column headers are written as 'name [unit]', mirroring File Import's parser, so an export/import pair round-trips physical units losslessly.
Known issues
With `auto_export` off, the node writes nothing during runs — a common surprise; use Export Now or enable auto-export to actually produce a file.
`auto_export` on with an empty File Path is a hard error, whereas an unwired input is a silent no-op — two different empty conditions with different behavior.
`append_mode` does not deduplicate or re-check the header, so appending frames with mismatched columns can produce a ragged file.