code: def _create_target_dir_if_needed(self, target, depth_limit=20):
          
  
          if depth_limit <= 0:
              raise FtpCreateDirsException('Depth limit exceeded')
          if not target:
              return
          target_dir = os.path.dirname(target)
          parent_dir, dir_name = os.path.split(target_dir)
  
          parent_dir_ls = []
          try:
              parent_dir_ls = self.ftp.nlst(parent_dir)
          except:
              # Possibly a microsoft server
              # They throw exceptions when we try to ls non-existing folders
              pass
  
          parent_dir_files = [os.path.basename(d) for d in parent_dir_ls]
          if dir_name not in parent_dir_files:
              if parent_dir and target_dir != '/':
                  self._create_target_dir_if_needed(target_dir, depth_limit=depth_limit - 1)
  
              self.logger.info('Will create dir: %s' % target)
              self.ftp.mkd(target_dir)
docs: Creates the directory for the path given, recursively creating
          parent directories when needed