diff options
Diffstat (limited to 'src/argaze/DataLog/File.py')
-rw-r--r-- | src/argaze/DataLog/File.py | 25 |
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 |