code: def _open_ftp(self):
          # type: () -> FTP
          
          _ftp = FTP()
          _ftp.set_debuglevel(0)
          with ftp_errors(self):
              _ftp.connect(self.host, self.port, self.timeout)
              _ftp.login(self.user, self.passwd, self.acct)
              self._features = {}
              try:
                  feat_response = _decode(_ftp.sendcmd("FEAT"), "latin-1")
              except error_perm:  # pragma: no cover
                  self.encoding = "latin-1"
              else:
                  self._features = self._parse_features(feat_response)
                  self.encoding = "utf-8" if "UTF8" in self._features else "latin-1"
                  if not PY2:
                      _ftp.file = _ftp.sock.makefile(  # type: ignore
                          "r", encoding=self.encoding
                      )
          _ftp.encoding = self.encoding
          self._welcome = _ftp.welcome
          return _ftp
docs: Open a new ftp object.