code: def write(self, data):
          
          if isinstance(data, text_type):
              # Accept text and encode as utf-8 for compatibility only.
              data = data.encode("utf-8")
          if self._closed:
              raise IOError("File is closed")
          if not (self._flags & self.FLAG_WRITE):
              raise IOError("File not open for writing")
          if not (self._flags & self.FLAG_BUFFERED):
              self._write_all(data)
              return
          self._wbuffer.write(data)
          if self._flags & self.FLAG_LINE_BUFFERED:
              # only scan the new data for linefeed, to avoid wasting time.
              last_newline_pos = data.rfind(linefeed_byte)
              if last_newline_pos >= 0:
                  wbuf = self._wbuffer.getvalue()
                  last_newline_pos += len(wbuf) - len(data)
                  self._write_all(wbuf[: last_newline_pos + 1])
                  self._wbuffer = BytesIO()
                  self._wbuffer.write(wbuf[last_newline_pos + 1 :])
              return
          # even if we're line buffering, if the buffer has grown past the
          # buffer size, force a flush.
          if self._wbuffer.tell() >= self._bufsize:
              self.flush()
          return
docs: Write data to the file.  If write buffering is on (``bufsize`` was
          specified and non-zero), some or all of the data may not actually be
          written yet.  (Use `flush` or `close` to force buffered data to be
          written out.)
  
          :param data: ``str``/``bytes`` data to write