在Python

时间:2017-03-23 14:22:56

标签: python ftp

我正在尝试连接到FTP服务器以传输文件。这是我的代码;

import ftplib
ftp = ftplib.FTP()
host = host_name
port = 22
ftp.connect(host, port)
ftp.login(username, password)

但这是我得到的错误。有人可以帮帮我吗? 我非常感谢你的帮助。

EOFError Traceback(最近一次调用最后一次)

<ipython-input-2-094fa8cc7c63> in <module>()
      3 host = host_name
      4 port = 22
----> 5 ftp.connect(host, port)
      6 ftp.login(username, password)

C:\Users\Ishwor.Bhatta\Anaconda3\lib\ftplib.py in connect(self, host, port, timeout, source_address)
    154         self.af = self.sock.family
    155         self.file = self.sock.makefile('r', encoding=self.encoding)
--> 156         self.welcome = self.getresp()
    157         return self.welcome
    158 

C:\Users\Ishwor.Bhatta\Anaconda3\lib\ftplib.py in getresp(self)
    233     # Raise various errors if the response indicates an error
    234     def getresp(self):
--> 235         resp = self.getmultiline()
    236         if self.debugging:
    237             print('*resp*', self.sanitize(resp))

C:\Users\Ishwor.Bhatta\Anaconda3\lib\ftplib.py in getmultiline(self)
    223             code = line[:3]
    224             while 1:
--> 225                 nextline = self.getline()
    226                 line = line + ('\n' + nextline)
    227                 if nextline[:3] == code and \

C:\Users\Ishwor.Bhatta\Anaconda3\lib\ftplib.py in getline(self)
    207             print('*get*', self.sanitize(line))
    208         if not line:
--> 209             raise EOFError
    210         if line[-2:] == CRLF:
    211             line = line[:-2]

EOFError: 

2 个答案:

答案 0 :(得分:4)

据我所知exception documentation

exception EOFError
     

当input()函数在没有读取任何数据的情况下达到文件结束条件(EOF)时触发。 (N.B。:io.IOBase.read()和io.IOBase.readline()方法在命中EOF时返回一个空字符串。)

这意味着服务器正在向您发送EOF,告诉您在您希望阅读内容时已终止连接。

查看方法的source code及其上方的评论,它说:

  

# Raise EOFError if the connection is closed

导致服务器关闭连接的许多原因,其中包括:

防火墙设置,代理,错误端口等等

答案 1 :(得分:1)

我能够通过以下代码解决问题;

using

谢谢大家