code: def read(fnames, markov, progress):
      
      with infiles(fnames, progress) as fnames:
          for fname in fnames:
              with open(fname, 'r') as fp:
                  if progress:
                      fp.seek(0, SEEK_END)
                      total = fp.tell()
                      title = truncate(fname, BAR_DESC_SIZE - 1, False)
                      pbar = tqdm(total=total, desc=title,
                                  leave=False, unit='byte',
                                  bar_format=BAR_FORMAT, dynamic_ncols=True)
                      fp.seek(0, SEEK_SET)
                      prev = 0
                  else:
                      pbar = None
  
                  try:
                      line = fp.readline()
                      while line:
                          markov.data(line, True)
                          if pbar is not None:
                              pos = fp.tell()
                              if pos <= total:
                                  pbar.update(pos - prev)
                                  prev = pos
                          line = fp.readline()
                  finally:
                      if pbar is not None:
                          pbar.close()
  
                  markov.data('', False)
docs: Read data files and update a generator.
  
      Parameters
      ----------
      fnames : `list` of `str`
          File paths.
      markov : `markovchain.base.MarkovBase`
          Generator to update.
      progress : `bool`
          Show progress bar.