使用 Python ftplib 连接到端口 22 上的 FTP 服务器时出现 EOFError

Getting EOFError while connecting to FTP server on port 22 with Python ftplib

我正在编写简单的 Python 程序来将 CSV 上传到 FTP 服务器。当我使用 WinSCP 连接时,我能够连接到 FTP 服务器。但是当我 运行 我的 Python 程序时,它以以下错误结束。

  ftp.connect(host, 22)
  File "C:\Python\Python39\lib\ftplib.py", line 162, in connect
    self.welcome = self.getresp()
  File "C:\Python\Python39\lib\ftplib.py", line 244, in getresp
    resp = self.getmultiline()
  File "C:\Python\Python39\lib\ftplib.py", line 234, in getmultiline
    nextline = self.getline()
  File "C:\Python\Python39\lib\ftplib.py", line 218, in getline
    raise EOFError
EOFError
host = "sftp.xx.com"
username = "username"
password = "passwrd"

ftp = FTP()
ftp.connect(host, 22)
print("..")
login_status = ftp.login(username,password)
print(login_status)
# change directory to upload
ftp.cwd('/content/remotedir')
# print the content of directory
print(ftp.dir())
fp = open("C:\sample.csv", 'rb')
# upload file
ftp.storbinary('STOR %s' % os.path.basename("C:\sample.csv"), fp, 1024)
fp.close()

print(ftp.dir())

ftplib 是一个 FTP 客户端。端口 22 用于 SFTP。那是一个完全不同的协议。

对于 Python 中的 SFTP,请使用 Paramiko 或 pysftp。