code: def _CreateLineReader(self, file_object):
      
      # The Python 2 csv module reads bytes and the Python 3 csv module Unicode
      # reads strings.
      if py2to3.PY_3:
        line_reader = text_file.TextFile(
            file_object, encoding=self._encoding, end_of_line=self._end_of_line)
  
        # pylint: disable=protected-access
        maximum_read_buffer_size = line_reader._MAXIMUM_READ_BUFFER_SIZE
  
      else:
        line_reader = line_reader_file.BinaryLineReader(
            file_object, end_of_line=self._end_of_line)
  
        maximum_read_buffer_size = line_reader.MAXIMUM_READ_BUFFER_SIZE
  
      # Line length is one less than the maximum read buffer size so that we
      # tell if there's a line that doesn't end at the end before the end of
      # the file.
      if self._maximum_line_length > maximum_read_buffer_size:
        self._maximum_line_length = maximum_read_buffer_size - 1
  
      # If we specifically define a number of lines we should skip, do that here.
      for _ in range(0, self.NUMBER_OF_HEADER_LINES):
        line_reader.readline(self._maximum_line_length)
      return line_reader
docs: Creates an object that reads lines from a text file.
  
      The line reader is advanced to the beginning of the DSV content, skipping
      any header lines.
  
      Args:
        file_object (dfvfs.FileIO): file-like object.
  
      Returns:
        TextFile|BinaryLineReader: an object that implements an iterator
            over lines in a text file.
  
      Raises:
        UnicodeDecodeError: if the file cannot be read with the specified
            encoding.