ftplib returns EOFError
Francesco Bochicchio
bockman at virgilio.it
Mon May 19 15:02:33 EDT 2008
On Mon, 19 May 2008 13:27:23 +0100, Jon Bowlas wrote:
> Hi All,
>
> I've written a little method to connect to an ftpserver which works well,
> however when I send a file using this ftp connection oddly I _sometimes_ get
> returned an EOFError from ftplib.getline even though my file is actually
> transferred.
>
> Here's my script:
>
> def uploadViaFtp(self, file, filename):
> '''A method to upload a file via ftp'''
> ftpserverloc = self.getItunesUftpServer()
> ftpserverusername = self.getItunesUftpUser()
> ftpserverpassword = self.getItunesUftpPsswd()
> ftp = ftplib.FTP(ftpserverloc)
> ftp.login(ftpserverusername, ftpserverpassword)
> try:
> ftp.storbinary("STOR " + filename, file, 1024)
> finally:
> file.close()
> ftp.quit()
>
>
> And here's the traceback:
> Traceback (innermost last):
> Module ZPublisher.Publish, line 114, in publish
> Module ZPublisher.mapply, line 88, in mapply
> Module ZPublisher.Publish, line 40, in call_object
> Module Products.FileSystemSite.FSPythonScript, line 108, in __call__
> Module Shared.DC.Scripts.Bindings, line 311, in __call__
> Module Shared.DC.Scripts.Bindings, line 348, in _bindAndExec
> Module Products.FileSystemSite.FSPythonScript, line 164, in _exec
> Module None, line 28, in upload_submit
> - <FSPythonScript at
> /silva/service_views/UCLItunesUPodcast/edit/Asset/UCLItunesUTrack/upload_sub
> mit>
> - Line 28
> Module Products.UCLItunesUPodcast.UCLItunesUService, line 138, in
> uploadViaFtp
> Module ftplib, line 523, in quit
> Module ftplib, line 246, in voidcmd
> Module ftplib, line 221, in voidresp
> Module ftplib, line 207, in getresp
> Module ftplib, line 193, in getmultiline
> Module ftplib, line 183, in getline
> EOFError
>
>
> Any help in catching and ignoring this error would be greatly appreciated.
>
> Regards
>
> Jon
ftp.quit() attempts to send a quit command and wait for the response
before closing. Apparently, sometime the connection is already closed
(don't know why) and you get the exception.
I guess you could do something like this:
try:
ftp.quit()
except EOFError:
ftp.close()
Ciao
-----
FB
More information about the Python-list
mailing list