code: def put(self, localpath, remotepath, callback=None, confirm=True):
          
          file_size = os.stat(localpath).st_size
          with open(localpath, "rb") as fl:
              return self.putfo(fl, remotepath, file_size, callback, confirm)
docs: Copy a local file (``localpath``) to the SFTP server as ``remotepath``.
          Any exception raised by operations will be passed through.  This
          method is primarily provided as a convenience.
  
          The SFTP operations use pipelining for speed.
  
          :param str localpath: the local file to copy
          :param str remotepath: the destination path on the SFTP server. Note
              that the filename should be included. Only specifying a directory
              may result in an error.
          :param callable callback:
              optional callback function (form: ``func(int, int)``) that accepts
              the bytes transferred so far and the total bytes to be transferred
          :param bool confirm:
              whether to do a stat() on the file afterwards to confirm the file
              size
  
          :return: an `.SFTPAttributes` object containing attributes about the
              given file
  
          .. versionadded:: 1.4
          .. versionchanged:: 1.7.4
              ``callback`` and rich attribute return value added.
          .. versionchanged:: 1.7.7
              ``confirm`` param added.