code: def print_items(
      self,
      header_list,
      item_dict_list,
      print_format="table",
      output_path=None,
  ):
      if print_format == "table":
          output = prettytable.PrettyTable(header_list)
          for item_dict in item_dict_list:
              row_vals = []
              for col_name in header_list:
                  row_vals.append(item_dict.get(col_name, "N/A"))
              output.add_row(row_vals)
      elif print_format == "csv":
          output = ""
          for idx, header in enumerate(header_list):
              output += (
                  header
                  if idx == len(header_list) - 1
                  else header + ","
              )
          output += os.linesep
          for item_dict in item_dict_list:
              for idx, header in enumerate(header_list):
                  output += (
                      item_dict.get(header, "N/A")
                      if idx == len(header_list) - 1
                      else item_dict.get(header, "N/A") + ","
                  )
              output += os.linesep
      else:
          output = ""
  
      # Save final output to file if path given
      if output_path:
          self.echo("Downloading output to path %s" % output_path)
          with open(output_path, "wb") as f:
              f.write(to_bytes(to_unicode(output)))
      # Print final output
      return self.echo(to_unicode(output))
  
imports: from __future__ import print_function
  from future import standard_library
  from builtins import input
  import os
  import sys
  import importlib
  import inspect
  import prettytable
  from io import open
  from datmo.core.util.i18n import get
  from datmo.core.util.exceptions import ArgumentError, ProjectNotInitialized
  from datmo.core.util.misc_functions import check_docker_inactive
label_desc: Use image node_id 5 for calling the Helper obj's underlying member method code with example usage: obj.print_items(header_list, item_dict_list, print_format, output_path) and returns: self