Source code for ytree.frontends.csv.io

"""
CSVArbor io classes and member functions



"""

# -----------------------------------------------------------------------------
# Copyright (c) ytree development team. All rights reserved.
#
# Distributed under the terms of the Modified BSD License.
#
# The full license is in the file COPYING.txt, distributed with this software.
# -----------------------------------------------------------------------------

from ytree.data_structures.io import CatalogDataFile


[docs] class CSVDataFile(CatalogDataFile): def open(self): self.fh = open(self.filename, mode="r") def _parse_header(self): pass def _read_data_select(self, rfields, tree_nodes, dtypes): if not rfields: return {} # We want to support nodes with missing descendents, # but this requires we manually reset their desc_uid to -1. reset_desc_uid = "desc_uid" in rfields fi = self.arbor.field_info nt = len(tree_nodes) field_data = self._create_field_arrays(rfields, dtypes, size=nt) self.open() f = self.fh sep = self.arbor.sep for i, tree_node in enumerate(tree_nodes): f.seek(tree_node._offset) line = f.readline() sline = line.split(sep) for field in rfields: field_data[field][i] = sline[fi[field]["column"]] if reset_desc_uid and tree_node.is_root: field_data["desc_uid"][i] = -1 self.close() return field_data