code: def open(self, mode):
          
          if mode == 'w':
              return self.format.pipe_writer(AtomicFtpFile(self._fs, self.path))
  
          elif mode == 'r':
              temp_dir = os.path.join(tempfile.gettempdir(), 'luigi-contrib-ftp')
              self.__tmp_path = temp_dir + '/' + self.path.lstrip('/') + '-luigi-tmp-%09d' % random.randrange(0, 1e10)
              # download file to local
              self._fs.get(self.path, self.__tmp_path)
  
              return self.format.pipe_reader(
                  FileWrapper(io.BufferedReader(io.FileIO(self.__tmp_path, 'r')))
              )
          else:
              raise Exception("mode must be 'r' or 'w' (got: %s)" % mode)
docs: Open the FileSystem target.
  
          This method returns a file-like object which can either be read from or written to depending
          on the specified mode.
  
          :param mode: the mode `r` opens the FileSystemTarget in read-only mode, whereas `w` will
                       open the FileSystemTarget in write mode. Subclasses can implement
                       additional options.
          :type mode: str