Bases: GenericWriter
Write outputs to a CSV/TSV file.
Source code in src/unitorch/cli/writers/__init__.py
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102 | def __init__(
self,
output_file: str,
nrows_per_sample: Optional[int] = None,
header: Optional[bool] = None,
columns: Optional[List[str]] = None,
sep: Optional[str] = "\t",
quoting: Optional[int] = 3,
escapechar: Optional[str] = None,
):
self.header = header
self.columns = columns
self.sep = sep
self.quoting = quoting
self.escapechar = escapechar
has_header = int(header is True)
self.skip_n_samples = (
0
if nrows_per_sample is None or not os.path.exists(output_file)
else (sum(1 for _ in open(output_file)) - has_header) // nrows_per_sample
)
mode = "a" if self.skip_n_samples > 0 else "w"
self.output_file = open(output_file, mode, encoding="utf-8")
|
columns
instance-attribute
quoting
instance-attribute
escapechar
instance-attribute
skip_n_samples
instance-attribute
skip_n_samples = (
0
if (nrows_per_sample is None or not exists(output_file))
else (sum(1 for _ in (open(output_file))) - has_header)
// nrows_per_sample
)
output_file
instance-attribute
output_file = open(output_file, mode, encoding='utf-8')
from_config
classmethod
from_config(config, **kwargs)
Source code in src/unitorch/cli/writers/__init__.py
| @classmethod
@config_defaults_init("core/writer/csv")
def from_config(cls, config, **kwargs):
pass
|
_write
_write(
outputs: WriterOutputs, include_header: bool = False
)
Source code in src/unitorch/cli/writers/__init__.py
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123 | def _write(self, outputs: "WriterOutputs", include_header: bool = False):
dataframe = outputs.to_pandas()
if self.columns is not None:
cols = set(dataframe.columns)
dataframe = dataframe[[c for c in self.columns if c in cols]]
self.output_file.write(
dataframe.to_csv(
index=False,
sep=self.sep,
quoting=self.quoting,
header=include_header,
escapechar=self.escapechar,
)
)
self.output_file.flush()
|
process_start
process_start(outputs: WriterOutputs)
Source code in src/unitorch/cli/writers/__init__.py
| def process_start(self, outputs: "WriterOutputs"):
self._write(
outputs, include_header=bool(self.header) and self.skip_n_samples == 0
)
|
process_chunk
process_chunk(outputs: WriterOutputs)
Source code in src/unitorch/cli/writers/__init__.py
| def process_chunk(self, outputs: "WriterOutputs"):
self._write(outputs, include_header=False)
|
process_end
Source code in src/unitorch/cli/writers/__init__.py
| def process_end(self):
self.output_file.close()
|