)
-def print_output(format, headers, rows):
+def print_output(format="table", headers=["field", "value"], rows=[], data=None):
+ """
+ Prints content in specified format.
+ :param format: output format (table, yaml, json, csv, jsonpath=...). Default:
+ :param headers: headers of the content
+ :param rows: rows of the content
+ :param data: dictionary or list with the content to be printed. Only applies to yaml, json or jsonpath format.
+ If specified, headers and rows are ignored, and json/yaml/jsonpath output is generated directly from data.
+ """
+
logger.debug("")
if format == "table":
table = PrettyTable(headers)
table.add_row(row)
print(table.get_csv_string())
elif format == "json" or format == "yaml" or format.startswith("jsonpath="):
- data = []
- for row in rows:
- item = {}
- for i in range(len(row)):
- item[headers[i]] = row[i]
- data.append(item)
+ if not data:
+ data = []
+ for row in rows:
+ item = {}
+ for i in range(len(row)):
+ item[headers[i]] = row[i]
+ data.append(item)
if format == "json":
print(json.dumps(data, indent=4))
elif format == "yaml":