code: def copyfileobj(src, dst, length=None):
      
      if length == 0:
          return
      if length is None:
          while True:
              buf = src.read(16*1024)
              if not buf:
                  break
              dst.write(buf)
          return
  
      BUFSIZE = 16 * 1024
      blocks, remainder = divmod(length, BUFSIZE)
      for b in range(blocks):
          buf = src.read(BUFSIZE)
          if len(buf) < BUFSIZE:
              raise IOError("end of file reached")
          dst.write(buf)
  
      if remainder != 0:
          buf = src.read(remainder)
          if len(buf) < remainder:
              raise IOError("end of file reached")
          dst.write(buf)
      return
docs: Copy length bytes from fileobj src to fileobj dst.
         If length is None, copy the entire content.