Skip to content
Snippets Groups Projects
file_extractor.py 1.58 KiB
Newer Older
'''
file_extractor.py
'''
import fileinput
jacques.grelet_ird.fr's avatar
jacques.grelet_ird.fr committed
import toml
import numpy


class FileExtractor:

    '''
    This class read an ASCII file, extract physical parameter with ROSCOP codification from the given column
    '''

    # constructor with values by default
    def __init__(self, file):
        # attibutes
        # public:
        self.file = file
        # private:
jacques.grelet_ird.fr's avatar
jacques.grelet_ird.fr committed
        self.__headeer = {}
        self.__data = {}
        self.__indMax = 0
        # constructor build objet by reading the file

    # overloading operators
jacques.grelet_ird.fr's avatar
jacques.grelet_ird.fr committed

    def __str__(self):
        ''' overload string representation '''
        return 'Class FileExtractor, file: %s, size = %d' % (self.file, len(self))

   # read code roscop file
jacques.grelet_ird.fr's avatar
jacques.grelet_ird.fr committed
    def read(self, keys, dic):
        indice = 0
        for line in fileinput.input(
                self.file, openhook=fileinput.hook_encoded("ISO-8859-1")):
jacques.grelet_ird.fr's avatar
jacques.grelet_ird.fr committed
            if line[0] == '#' or line[0] == '*':
                continue
            indice += 1
            # iterate over the lines of opened file "fileName"
            # ------------------------------------------------
jacques.grelet_ird.fr's avatar
jacques.grelet_ird.fr committed
            p = line.split()
            for k in keys:
                print('{:>{width}}'.format(
                    p[dic[k]], width=8), end=' ')
jacques.grelet_ird.fr's avatar
jacques.grelet_ird.fr committed
            print()
        self.__indMax = indice
        print("{}".format(self.__indMax))


# for testing in standalone context
# ---------------------------------
if __name__ == "__main__":
    fe = FileExtractor('data/cnv/fr29001.cnv')
jacques.grelet_ird.fr's avatar
jacques.grelet_ird.fr committed
    cfg = toml.load('tests/test.toml')
    dic = cfg['split']['ctd']
    fe.read(['PRES', 'TEMP', 'PSAL', 'DOX2'], dic)