使用python ftplib下载,但得到ConnectionRefusedError:[Errno 111]连接被拒绝

问题描述

我尝试使用ftplib从FTP服务器下载,但是我得到了ConnectionRefusedError: [Errno 111] Connection refused 这是我的代码

import os
import sys
import configparser
import socket

def downloadfile(downftp,remotepath,localpath):
    bufsize=1024
    fp = open(localpath,'wb')     
    downftp.set_debuglevel(2)
    downftp.retrbinary('RETR ' + remotepath,fp.write,bufsize)
    fp.close()   
    
def ftpconnect(host,username,password):
    ftp = FTP()
    ftp.connect(host=host,port=10022)
    ftp.login(username,password)
    return ftp

def uploadfile(ftp,localpath):
    bufsize=1024
    fp=open(localpath,'rb')       
    ftp.set_debuglevel(0)
    ftp.storbinary('STOR ' + remotepath,fp,bufsize)
    fp.close()
conftp = ftpconnect('42.*.**.201','cityof********.****erver','COU***123')
downloadfile(conftp,'/world/datapacks/sys/data/pgdc/functions/food.mcfunction','food.mcfunction')

所有错误

  File "<pyshell#7>",line 1,in <module>
    ftp.dir()
  File "/usr/lib/python3.6/ftplib.py",line 575,in dir
    self.retrlines(cmd,func)
  File "/usr/lib/python3.6/ftplib.py",line 468,in retrlines
    with self.transfercmd(cmd) as conn,\
  File "/usr/lib/python3.6/ftplib.py",line 399,in transfercmd
    return self.ntransfercmd(cmd,rest)[0]
  File "/usr/lib/python3.6/ftplib.py",line 361,in ntransfercmd
    source_address=self.source_address)
  File "/usr/lib/python3.6/socket.py",line 724,in create_connection
    raise err
  File "/usr/lib/python3.6/socket.py",line 713,in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

我尝试了ftp.set_pasv(True),它显示了相同的错误ConnectionRefusedError: [Errno 111] Connection refused

我尝试了ftp.set_pasv(False), 然后挂在上面

...
*cmd* 'RETR /world/datapacks/sys/data/pgdc/functions/food.mcfunction'
*put* 'RETR /world/datapacks/sys/data/pgdc/functions/food.mcfunction\r\n'
*get* '150 opening ASCII mode data connection\n'
*resP* '150 opening ASCII mode data connection'

请帮助。谢谢。

解决方法

您是否可以从命令行即没有python代码的情况下成功连接到ftp服务器?我认为这应该是检查连接是否被ftp拒绝或python代码有问题的第一步。

 ftp = FTP(host=ftp_host,user=ftp_user,passwd=ftp_pass)
 ftp.login()

您的上传正常吗?

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...