Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Best way to trap errors in ftplib?

277 views
Skip to first unread message

Peter A. Schott

unread,
Jan 11, 2005, 6:47:55 PM1/11/05
to
Using ftplib.FTP object for a project we have here to upload/download files. I
know that I can wrap everything in try/except blocks, but I'm having trouble
getting the exact error messages out of the Exceptions.

I'd like to either send an e-mail or log the failure to a database. It would
also be nice to see what the message is and perhaps add some additional logic
for delay/retry or something similar.

Has anyone done any of the above? Willing to share some samples?

Here's a little of my code - maybe you can see what I'm doing/not doing.

def myuploadbinaryfunction(args here):
objFTP = ftplib.FTP(HostName, UserName, Password)
objFTP.cwd(RemotePath)

try:
objFTP.storbinary("STOR " + RemoteFile, file(os.path.join(LocalPath,
LocalFile), "rb"))
SQLLogging.LogFTP(LocalFile, Company, 1)
except Exception, errObj:
SQLLogging.LogFTP(LocalFile, Company, 0)
reportError("Failed to upload " + LocalFile, str(errObj))
print Exception
print errObj

In the above, reportError will send an e-mail to alert. I realize that the
errObj in this case may not have the ability to convert to string, but am not
sure how to get the output otherwise. Not sure how to handle a retry of a
failure, either.

Thank you for your help!

-Peter Schott

Mark McEahern

unread,
Jan 11, 2005, 7:55:12 PM1/11/05
to Peter A.Schott, pytho...@python.org
Peter A.Schott wrote:

>Using ftplib.FTP object for a project we have here to upload/download files. I
>know that I can wrap everything in try/except blocks, but I'm having trouble
>getting the exact error messages out of the Exceptions.
>
>

Consider using the traceback a la:

try:
[... whatever ...]
except:
import sys, traceback
t, v, tb = sys.exc_info()
# or use StringIO to "print" the traceback to and then log *that*
traceback.print_tb(tb)

// m

0 new messages