68 lines
1.9 KiB
Python
68 lines
1.9 KiB
Python
"""
|
|
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:
|
|
|
|
_delim = self._delimiter if 'delimiter' not in _args else _args['delimiter']
|
|
_path = self._path if 'path' not in _args else _args['path']
|
|
_mode = self._mode if 'mode' not in _args else _args['mode']
|
|
info.to_csv(_path,index=False,sep=_delim)
|
|
|
|
pass
|
|
except Exception as e:
|
|
#
|
|
# Not sure what should be done here ...
|
|
pass
|
|
finally:
|
|
# DiskWriter.THREAD_LOCK.release()
|
|
pass |