472,114 Members | 1,874 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 472,114 software developers and data experts.

ftplib returns EOFError

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

Jun 27 '08 #1
1 5600
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
Jun 27 '08 #2

This discussion thread is closed

Replies have been disabled for this discussion.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.