Projekt

Obecné

Profil

Stáhnout (1.2 KB) Statistiky
| Větev: | Tag: | Revize:
1
import logging
2
import os
3
import time
4

    
5
from aswi2021vochomurka.model.Message import Message
6
from typing import TextIO
7

    
8
trans = str.maketrans({
9
    "/": "_",
10
    "\\": "_",
11
    ":": "_",
12
    "\"": "_",
13
    "$": "_",
14
    "*": "_",
15
    ".": "_"})
16

    
17

    
18
def create_filename(message: Message):
19
    name = "data/" + message.topic.translate(trans) + "/" + message.date + "_" + message.time + ".csv"
20
    return name
21

    
22

    
23
class FileManager:
24
    topic: str
25
    lastUpdate: float
26
    file: TextIO
27

    
28
    def __init__(self, topic: str, message: Message):
29
        self.topic = topic
30
        logging.debug('opening file ' + self.topic)
31

    
32
        try:
33
            filename = create_filename(message)
34
            os.makedirs(os.path.dirname(filename), exist_ok=True)
35
            self.file = open(filename, "w+")
36
        except Exception as error:
37
            logging.warning(error)
38
            raise error
39
        self.write(message)
40

    
41
    def write(self, message: Message):
42
        self.file.write(message.date + ";" + message.time + ";" + str(message.index) + ";" + str(message.value) + "\n")
43
        self.lastUpdate = time.time()
44

    
45
    def close(self):
46
        logging.debug('closing file ' + self.topic)
47
        self.file.flush()
48
        self.file.close()
(2-2/6)