You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
2.0 KiB
Python
69 lines
2.0 KiB
Python
8 months ago
|
"""
|
||
|
This file is a wrapper around pandas built-in functionalities to handle character delimited files
|
||
|
"""
|
||
|
import pandas as pd
|
||
|
import numpy as np
|
||
|
import os
|
||
|
class File :
|
||
|
def __init__(self,**params):
|
||
|
"""
|
||
|
|
||
|
@param path absolute path of the file to be read
|
||
|
"""
|
||
|
self.path = params['path'] if 'path' in params else None
|
||
|
self.delimiter = params['delimiter'] if 'delimiter' in params else ','
|
||
|
|
||
|
def isready(self):
|
||
|
return os.path.exists(self.path)
|
||
|
def meta(self,**_args):
|
||
|
return []
|
||
|
|
||
|
class Reader (File):
|
||
|
"""
|
||
|
This class is designed to read data from disk (location on hard drive)
|
||
|
@pre : isready() == True
|
||
|
"""
|
||
|
|
||
|
def __init__(self,**_args):
|
||
|
super().__init__(**_args)
|
||
|
|
||
|
def read(self,**args):
|
||
|
_path = self.path if 'path' not in args else args['path']
|
||
|
_delimiter = self.delimiter if 'delimiter' not in args else args['delimiter']
|
||
|
return pd.read_csv(_path,delimiter=self.delimiter)
|
||
|
def stream(self,**args):
|
||
|
raise Exception ("streaming needs to be implemented")
|
||
|
class Writer (File):
|
||
|
|
||
|
"""
|
||
|
This function writes output to disk in a designated location. The function will write a text to a text file
|
||
|
- If a delimiter is provided it will use that to generate a xchar-delimited file
|
||
|
- If not then the object will be dumped as is
|
||
|
"""
|
||
|
# THREAD_LOCK = RLock()
|
||
|
def __init__(self,**_args):
|
||
|
super().__init__(**_args)
|
||
|
self._mode = 'w' if 'mode' not in _args else _args['mode']
|
||
|
|
||
|
def write(self,info,**_args):
|
||
|
"""
|
||
|
This function writes a record to a designated file
|
||
|
@param label <passed|broken|fixed|stats>
|
||
|
@param row row to be written
|
||
|
"""
|
||
|
try:
|
||
|
|