Source code for draugr.writers.csv_writer

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import csv
from typing import Any, TextIO, Tuple

from apppath import ensure_existence
from draugr import PROJECT_APP_PATH
from draugr.writers.writer import Writer

__author__ = "Christian Heider Nielsen"
__doc__ = """
Created on 27/04/2019

@author: cnheider
"""

__all__ = ["CSVWriter"]

from pathlib import Path


[docs]class CSVWriter(Writer): """description"""
[docs] @staticmethod def get_csv_writer(path: Path = Path.home() / "Models") -> Tuple[TextIO, Any]: """ :param path: :type path: :return: :rtype:""" if path.is_dir() or path.suffix != ".csv": path /= "log.csv" csv_file = open( str( ensure_existence(path, overwrite_on_wrong_type=True, declare_file=True) ), mode="a", ) return csv_file, csv.writer(csv_file)
def _scalar(self, tag: str, value: float, step: int) -> None: self._write(step, tag, value)
[docs] def __init__(self, path, **kwargs): super().__init__(**kwargs) self._path = path self._file = None self._writer = None
def _open(self): self._file, self._writer = self.get_csv_writer(self._path) return self def _close(self, exc_type=None, exc_val=None, exc_tb=None) -> None: self._file.close() def _write(self, *d) -> None: self._writer.writerow(d)
if __name__ == "__main__": with CSVWriter(PROJECT_APP_PATH.user_log / "test") as p: p.scalar("s", 2)