import ftplib
import urllib2
import os
import logging
logger = logging.getLogger('ftpuploader')
hdlr = logging.FileHandler('ftplog.log')
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.INFO)
FTPADDR = "some ftp address"
def upload_to_ftp(con, filepath):
try:
f = open(filepath,'rb') # file to send
con.storbinary('STOR '+ filepath, f) # Send the file
f.close() # Close file and FTP
logger.info('File successfully uploaded to '+ FTPADDR)
except, e:
logger.error('Failed to upload to ftp: '+ str(e))
Αυτό δεν φαίνεται να δουλεύει, λαμβάνω συντακτικό σφάλμα, ποιος είναι ο σωστός τρόπος για να γίνει αυτό για την καταγραφή όλων των ειδών των εξαιρέσεων σε ένα αρχείο
Πρέπει να ορίσετε τον τύπο της εξαίρεσης που θέλετε να πιάσετε. Έτσι γράψτε except Exception, e:
αντί για except, e:
για μια γενική εξαίρεση (που θα καταγραφεί ούτως ή άλλως).
Άλλη δυνατότητα είναι να γράψετε ολόκληρο τον κώδικα try/except με αυτόν τον τρόπο:
try:
with open(filepath,'rb') as f:
con.storbinary('STOR '+ filepath, f)
logger.info('File successfully uploaded to '+ FTPADDR)
except Exception, e:
logger.error('Failed to upload to ftp: '+ str(e))
στην Python 3.x και στις σύγχρονες εκδόσεις της Python 2.x χρησιμοποιήστε except Exception as e
αντί για except Exception, e
:
try:
with open(filepath,'rb') as f:
con.storbinary('STOR '+ filepath, f)
logger.info('File successfully uploaded to '+ FTPADDR)
except Exception as e:
logger.error('Failed to upload to ftp: '+ str(e))
Η σύνταξη δεν υποστηρίζεται πλέον στην python 3. Χρησιμοποιήστε την ακόλουθη.
try:
do_something()
except BaseException as e:
logger.error('Failed to do something: ' + str(e))
Μπορείτε να δοκιμάσετε να καθορίσετε ρητά τον τύπο BaseException. Ωστόσο, αυτό θα πιάσει μόνο παράγωγα της BaseException. Ενώ αυτό περιλαμβάνει όλες τις εξαιρέσεις που παρέχονται από την υλοποίηση, είναι επίσης πιθανό να εγείρουν αυθαίρετες κλάσεις παλαιού τύπου.
try:
do_something()
except BaseException, e:
logger.error('Failed to do something: ' + str(e))