def transform_data_to_file(data, formats, output=None, category='schema', **kwargs):
"""
Transform data into each of output_formats and write result to output_filename or stdout.
:param data: dict (schema, mapping or diff)
:param formats: list of str - extensions of output desired among:
'json', 'yaml' (hierarchical formats)
'tsv', 'html', 'md' or 'xlsx' (list like formats)
:param output: str full path to file where formatted output will be saved saved
(default is std out)
:param category: string in 'schema', 'mapping', 'diff' - describe input data
:param kwargs: may contain additional specific arguments
columns: list of columns to display in the output for list like formats
without_counts: bool to display count fields in output for hierarchical formats
"""
wrong_formats = set(formats) - {'tsv', 'xlsx', 'json', 'yaml', 'html', 'md'}
if wrong_formats:
raise ValueError("Output format should be tsv, xlsx, html, md, json or yaml. "
"{} is/are not supported".format(wrong_formats))
for output_format in formats:
output_maker = rec_find_right_subclass(output_format)(
data, category=category,
columns_to_get=kwargs.get('columns'), without_counts=kwargs.get('without_counts'))
with output_maker.open(output) as file_descr:
output_maker.write_data(file_descr)
评论列表
文章目录