By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,345 Members | 1,783 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,345 IT Pros & Developers. It's quick & easy.

Best way to trap errors in ftplib?

P: n/a
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
Jul 18 '05 #1
Share this Question
Share on Google+
1 Reply


P: n/a
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
Jul 18 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.