code: def remove(self, path, recursive=True):
          
          if not self.exists(path):
              logger.debug('Could not delete %s; path does not exist', path)
              return False
  
          (bucket, key) = self._path_to_bucket_and_key(path)
          s3_bucket = self.s3.Bucket(bucket)
          # root
          if self._is_root(key):
              raise InvalidDeleteException('Cannot delete root of bucket at path %s' % path)
  
          # file
          if self._exists(bucket, key):
              self.s3.meta.client.delete_object(Bucket=bucket, Key=key)
              logger.debug('Deleting %s from bucket %s', key, bucket)
              return True
  
          if self.isdir(path) and not recursive:
              raise InvalidDeleteException('Path %s is a directory. Must use recursive delete' % path)
  
          delete_key_list = [{'Key': obj.key} for obj in s3_bucket.objects.filter(Prefix=self._add_path_delimiter(key))]
  
          # delete the directory marker file if it exists
          if self._exists(bucket, '{}{}'.format(key, S3_DIRECTORY_MARKER_SUFFIX_0)):
              delete_key_list.append({'Key': '{}{}'.format(key, S3_DIRECTORY_MARKER_SUFFIX_0)})
  
          if len(delete_key_list) > 0:
              n = 1000
              for i in range(0, len(delete_key_list), n):
                  self.s3.meta.client.delete_objects(Bucket=bucket, Delete={'Objects': delete_key_list[i: i + n]})
              return True
  
          return False
docs: Remove a file or directory from S3.
          :param path: File or directory to remove
          :param recursive: Boolean indicator to remove object and children
          :return: Boolean indicator denoting success of the removal of 1 or more files