aboutsummaryrefslogtreecommitdiff
path: root/src/argaze/DataLog/File.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/argaze/DataLog/File.py')
-rw-r--r--src/argaze/DataLog/File.py25
1 files changed, 19 insertions, 6 deletions
diff --git a/src/argaze/DataLog/File.py b/src/argaze/DataLog/File.py
index 12bad6d..8179f8f 100644
--- a/src/argaze/DataLog/File.py
+++ b/src/argaze/DataLog/File.py
@@ -12,7 +12,7 @@ from typing import TypeVar, Tuple
from dataclasses import dataclass, field
import os, pathlib
-from argaze import DataFeatures, GazeFeatures
+from argaze import DataFeatures
@dataclass
class TimeStampedDataLogger(DataFeatures.TimeStampedDataLogger):
@@ -21,8 +21,11 @@ class TimeStampedDataLogger(DataFeatures.TimeStampedDataLogger):
path: str = field(default=None)
"""File path where to write data."""
- separator: chr = field(default=' ')
- """Char used to separate timestamp from data"""
+ header: str = field(default=None)
+ """String to write first."""
+
+ separator: str = field(default=", ")
+ """String used to separate list or tuple formatted log."""
def __post_init__(self):
"""Check that folder structure exist and create file."""
@@ -35,13 +38,23 @@ class TimeStampedDataLogger(DataFeatures.TimeStampedDataLogger):
# Open file
self._file = open(self.path, 'w', encoding='utf-8', buffering=1)
+ # Write header if required
+ if self.header is not None:
+
+ print(self.header, file=self._file, flush=True)
+
def __del__(self):
"""Close file."""
self._file.close()
- def emit(self, timestamp: DataFeatures.TimeStampType, data: DataFeatures.DataDictionary):
- """Write timestamp and data separated by separator char as a new line into file."""
+ def emit(self, formatted_log: any):
+ """Write log as a new line into file. List or tuple are converted into strings separated by separator char."""
+
+ # Format list or tuple element into quoted strings
+ if not isinstance(formatted_log, str):
+
+ formatted_log = self.separator.join(f'\"{d}\"' for d in formatted_log)
# Write into file
- print(f'{timestamp}{self.separator}{eval(self.selector)}', file=self._file, flush=True) \ No newline at end of file
+ print(formatted_log, file=self._file, flush=True) \ No newline at end of file