class_docstr: The implement of DialogReader.
code: def _read_files(self, filelist, phase, is_infer, shuffle_files):
      input_files = open(filelist).readlines()
  
      def __wrapper__():
          if shuffle_files:
              self.global_rng.shuffle(input_files)
  
          if phase == "train":
              self.total_file = len(input_files)
          for file_index, input_file in enumerate(input_files, 1):
              if phase == "train":
                  self.current_file_index = file_index
                  self.current_file = input_file
              file_reader = self._read_file(
                  input_file.strip(), phase, is_infer
              )
              for record in file_reader():
                  yield record
  
      return __wrapper__
  
imports: import csv
  from collections import namedtuple
  from contextlib import contextmanager
  import gzip
  import numpy
  from ..utils import pad_batch_data
  from ..utils.args import str2bool
  from ..utils.masking import mask
  from ..utils import tokenization
label_desc: Use image node_id 8 for calling the DialogReader obj's underlying member method code with example usage: obj._read_files(filelist, phase, is_infer, shuffle_files) and returns: __wrapper__